【问题标题】:How do I make dockable forms like the IDE's without the very slow freezing movement of the dockable form?如何制作像 IDE 一样的可停靠表单,而不会出现可停靠表单非常缓慢的冻结移动?
【发布时间】: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


【解决方案1】:

查看Jeremy NorthUsing the TDockTabSet component 文章。它已经有几年历史了,但应该会给您一些有用的指导。

【讨论】:

  • 谢谢约翰。我很高兴能帮上忙。
  • 我试过 TDockTabSet 和它的例子,它很慢而且闪烁。以我的拙见,它在当时可能还不错,但在 Delphi XE 或 XE2 上运行得不是很好。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多