关于是pagecontrol页面的拖动问题 ( 积分: 100 )

  • 主题发起人 主题发起人 rockmmm
  • 开始时间 开始时间
R

rockmmm

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么实现pagecontrol上的页面tabsheet的拖动,即是按住tabsheet的标签,然后拖动,插入到其它的标签前面,就跟现在的一些浏览器多面页一样,里面的页面的位置可以随意拖动。
 
反复实验,终于成功了,给你看看。
procedure TForm1.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var I:Integer;
begin
if Button =mbleft then
begin
i:=PageControl1.IndexOfTabAt(x,y);
if (i>-1) and (i<PageControl1.PageCount) then
begin
PageControl1.BeginDrag(False);
end;
end;
end;

procedure TForm1.PageControl1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var i:Integer;
begin
if Source is TPageControl then
begin
i:=PageControl1.IndexOfTabAt(x,y);
Accept := (i > -1) and (i <> PageControl1.ActivePageIndex) and (i < PageControl1.PageCount);
end;
end;

procedure TForm1.PageControl1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var i,j:Integer;
begin
if source is TPageControl then
begin
i:=PageControl1.ActivePageIndex;
j:=PageControl1.IndexOfTabAt(x,y);
if (j>-1) and (j<>i) then
begin
PageControl1.ActivePage.PageIndex:=j;
end;
end;
end;

end.
 
控件的属性上没有作什么设置。
主要是考虑拖放前后的变化
 
嗯,试过,好使!我原来以为这个控件有相关的属性设置的,但没想到还是要写代码!还是感谢你!
 
后退
顶部