如何制作像 IDE 那样的可停靠表单,而不需要非常缓慢地冻结可停靠表单的移动?

问题描述 投票:0回答:2

如何实现 IDE 方法或最终实现基本的停靠方法,而不需要非常缓慢地冻结可停靠窗体的移动?

当我在 Delphi 中搜索可停靠表单时,发现 Zibadian 在程序员天堂上的帖子

首先: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 drag-and-drop
2个回答
8
投票

查看Jeremy North撰写的使用 TDockTabSet 组件文章。它已经有几年历史了,但应该会给你一些有用的指导。


4
投票
© www.soinside.com 2019 - 2024. All rights reserved.