我想实现通过拖动标签来改变TabSheet顺序,当DragDrop位置在某个标签的左半边时就把tabsheet放到这页的左边,在右半边就放到右边,但pagecontrol没有指定tabwidth,每个标签的宽度都不一样,请问如何实现知道是鼠标释放在某个标签的左半边还是右半边?我想的是获取标签的宽度和位置来确定,但似乎找不到相应的属性?
解决方案 »
- list index out of bounds(1)
- cds_Spin_I.Filter := 'SORT_NO = ' + QuotedStr(cds_Spin_S.FieldByname('SORT_NO').AsString);
- 窗体嵌入问题
- 大家来讨论一下中搜的实现原理。
- 获得当前顶层窗口句柄的API是什么
- DELPHI自带的web浏览器插件使用中发现一个问题
- 如何得到系统中当前光标所在位置的窗口句柄?就是用户正在输入东西的那个窗口
- 如何得到本机的动态IP地址?
- 求教!求教!!有难度的问题,这样的透明问题如何解决???????
- 用何用DELPHI可以实现选择SQL SERVER里的表?
- 请教 如果创建多个线程【【【【【【【【【【【【【【【【【【【【
- DLL回调函数,无法正常调用,不知道哪出错了[100分求解]
procedure TMainForm.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer) ;
begin
PageControl1.BeginDrag(False) ;
end;procedure TMainForm.PageControl1DragDrop(Sender, Source: TObject; X,
Y: Integer) ;
const
TCM_GETITEMRECT = $130A;
var
TabRect: TRect;
j: Integer;
begin
if (Sender is TPageControl) then
for j := 0 to PageControl1.PageCount - 1 do
begin
PageControl1.Perform(TCM_GETITEMRECT, j, LParam(@TabRect)) ;
if PtInRect(TabRect, Point(X, Y)) then
begin
if PageControl1.ActivePage.PageIndex <> j then
PageControl1.ActivePage.PageIndex := j;
Exit;
end;
end;
end;procedure TMainForm.PageControl1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean) ;
begin
if (Sender is TPageControl) then Accept := True;
end;