首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么获取PageControl上某个标签的宽度和位置

2012-02-05 
如何获取PageControl上某个标签的宽度和位置?我想实现通过拖动标签来改变TabSheet顺序,当DragDrop位置在某

如何获取PageControl上某个标签的宽度和位置?
我想实现通过拖动标签来改变TabSheet顺序,当DragDrop位置在某个标签的左半边时就把tabsheet放到这页的左边,在右半边就放到右边,但pagecontrol没有指定tabwidth,每个标签的宽度都不一样,请问如何实现知道是鼠标释放在某个标签的左半边还是右半边?

我想的是获取标签的宽度和位置来确定,但似乎找不到相应的属性?

[解决办法]

Delphi(Pascal) code
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;
[解决办法]
TRzPageControl可以达到楼主的要求,建议看看它的源代码。

热点排行