Delphi中停靠技术的实现
OnDockOver事件里加入代码:
procedure TDockableForm.FormDockOver(Sender: TObject; Source: TDragDockObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var ARect: TRect; begin Accept := Source.Control is TDockableForm; if Accept then begin ARect.TopLeft := ClientToScreen(Point(0, 0)); ARect.BottomRight := ClientToScreen( Point(ClientWidth div 2, ClientHeight)); Source.DockRect := ARect; end; end; 怎么样,效果还可以吧。对了,需要注意的是,用ManualDock函数可以安全的完成停靠功能,不要用Dock函数。ManualDock函数有一些参数: function ManualDock(NewDockSite: TWinControl; DropControl: TControl = nil; ControlSide: TAlign = alNone): Boolean; NewDockSite:要被停靠的窗体; DropControl:已经存在于NewDockSite的TControl,在这里可以把它设成nil; ControlSide: 停靠的位置,可以是上,下,左,右,全部等。 当然,我们也可以让TiledHost也具有和LeftDockPanel一样有被停靠的功能,只要把TiledHost看成前面的LeftDockPanel,添加一些属性和事件;把TiledHost看成DockableForm, 更多相关文章
|
推荐文章
精彩文章
|