简单的delphi停泊窗口制作

来源:互联网 发布:战争之王 知乎 编辑:程序博客网 时间:2024/05/22 16:47

可停泊窗口在office系列软件及delphi和vb等软件中经常见到,通过停泊窗口可以改善界面的美观效果。在delphi中创建可停泊窗口比较简单,基本分为两个步骤:一建立停泊区即可以放置停泊对象的区域继承TWinControl的控件都可以做为停泊区,只需设置它的DockSite和Autosize属性,DockSite设置为true即可以接受停靠,autosize设置为True时当停泊对象离开停泊区时停泊区会自动改变大小。二设置停泊对象的相关属性。DragKind设置为dkDock表示接下来的操作是一个停靠操作而不是普通的拖放操作,DragMode设定为dmAutomatic表示当鼠标在工具条上点击并移动后,会自动发起拖放动作。这两步就可以创建简单的停靠。在停靠中会引发停靠区的onDragOver和onDragDrop事件,onDragOver有个参数accept标识是否接受停泊,onDragDrop表示停泊。停泊对象在停靠中会引发onStartDock

和onenddock事件表示停泊开始和结束。下面是一个小例子。

新建工程,在窗体上放置Toolbar控件和timer控件,在toolbar上新建两个按钮。属性设置如下:

TForm1       DockSite=true                    autosize=true

Toolbar1     DragKind=dkDock              dragmode=dmAutomatic

timer1         interval=200

事件代码如下:

procedure TForm1.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
  ToolBar1.Align:=alTop;        //设置停靠后toolbar的放置位置据顶
  ToolBar1.DragMode:=dmManual;   //停靠后不能再次进行拖曳操作
end;

procedure TForm1.ntTimer(Sender: TObject);
begin
  if not ToolBar1.Visible then       //当离开停靠区后点击关闭按钮后能自动再次显示否则toolbar隐藏不能进行操作了。
    ToolBar1.Visible:=True;
end;

 

将toolbar的dragmode设置为dmManual则必须写如下事件

procedure TForm1.ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   ToolBar1.BeginDrag(False);
end;

 

 

关于停靠的更多详细操作看如下网址

http://delphi.sharpplus.com/Delphi_Old/dock.htm