【发布时间】:2010-11-19 11:39:05
【问题描述】:
如何实现 IDE 方法或最终制作基本的停靠方法,而不会出现可停靠窗体非常缓慢的冻结移动?
当我在 Delphi 中搜索可停靠表单并找到 a post by Zibadian on Programmers Heaven:
首先:Delphi IDE 中的窗口不是 MDI 表单,而是 SDI 表单。
现在创建一个可停靠窗口。
Form2 将是可停靠的,而 Form1 将是停靠它的地方。在 Form1 上放置一个控件(如 TPanel)以提供 DockSite。确保将该控件的 DockSite 和 UseDockManager 属性设置为 true。
对于 Form2,将 DragKind 设置为 dkDrop,将 DragMode 设置为 dmAutomatic 并将 UseDockManager 设置为 true。
这是基本的停靠功能。如果您运行您的程序,显示 Form2 并将该表单拖到停靠站点上,它应该停靠在该站点上。您甚至可以通过在 IDE 中看到的“标题”来取消停靠。
对我来说,这种方法移动可停靠表单的速度非常缓慢。但是,Zibadian 的回答继续描述 IDE 是如何做到的:
IDE 的停靠方法稍微复杂一些,因为您看不到停靠站点。我认为,您需要编写一个 Form1.OnDockOver 或 Form1.OnDockDrop 来执行该操作。该(那些)事件需要在适当的位置显示停靠点。
【问题讨论】:
-
您使用的是什么版本的 Delphi?在最近的版本中,有一个 ScreenSnap 属性用于此目的
标签: delphi drag-and-drop