Delphi中停靠技术的实现怎么?窗体又不见了?那当然了,我们只是讲了OnDockOver,还没详细讲解OnDockDrop呢,它才是决定停靠窗体在哪里出现的罪魁祸首: OnDockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer); 参数和OnDockOver差不多,只是少了State: TDragState和var Accept: Boolean 它是在停靠窗体进入被停靠控件时发生的,作用是控制停靠窗体的最终位置。下面添加如下代码: procedure TMainForm.LeftDockPanelDockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer); Begin LeftDockPanel.Width := ClientWidth div 3; LeftSplitter.Left := LeftDockPanel.Width + LeftSplitter.Width; End; 现在再运行程序,哇塞,成功了。出现了一个和Delphi的IDE完全一样的停靠窗体,上面是两条横线,用来把它拖出来,右上角有一个小X是用来关闭的。 不过好景不长,当我们把它关闭时,装载DockableForm的LeftDockPanel不能还原,还是霸占着主窗口的客户区,怎么办? 嘻嘻,忘了告诉你们了,其实Delphi早就为我们作好了一切。 请打开DockableForm的关闭事件,你会发现原来当你点击右上角那个小X关闭DockableForm时,它会触发DockableForm的OnClose事件,在OnClose事件中把LeftDockPanel 更多相关文章
|
推荐文章
精彩文章
|