【问题标题】:How do I do Drag and Dock like the Delphi IDE with pins and tabs?如何像 Delphi IDE 那样使​​用引脚和选项卡进行拖放?
【发布时间】:2012-02-16 22:01:20
【问题描述】:

我想让 Drag and Dock 在我的应用程序中像在 Delphi IDE 中一样工作(即能够在对象检查器/结构视图周围拖动并将它们停靠在合适的位置)。我在将表单停靠到 PageControl 方面取得了相当大的成功,但想知道是否有人知道如何让它与小关闭按钮和引脚等一起工作。

我也很想知道 Delphi IDE 使用哪些组件来实现这一点。

我提出问题的原因是我想制作更多关于如何做到这一点的高级视频,我之前做过的两个视频是 herehere

【问题讨论】:

  • Alister 的问题是明确且不稳定的,但 Ken 发布的重复链接是在问一堆不相关的小琐事问题。与主题不同,它似乎在询问一些细微的细节。我认为这个问题写得更好。如果这个被关闭,我将编辑原件,因为它充满了噪音。
  • @WarrenP:更不用说这个问题的优秀答案了! ;)
  • 嗯,链接副本的答案很好,而不是问题本身。

标签: delphi drag-and-drop


【解决方案1】:

您几乎可以在任何版本的 Delphi 中使用JVCL JvDocking 组件进行拖放。它是免费和开源的。带有大头针和关闭按钮的样式可以使用 JvDocking 附带的称为 VID(visual interdev)样式的停靠样式。

已经有很多商业替代品,并且 Delphi 内置了一些支持,我发现这些支持不足以满足我的需求。虽然 Delphi IDE 有自己的内部停靠库,但对选项卡的支持非常有限、速度慢,而且在我的主观意见中,它已损坏。

然而,即使在古老的 delphi 版本中,Delphi 7 及更高版本,JvDocking 也提供了 VCL 对接所提供的所有功能以及更多功能,因此忽略内置的 VCL 功能是没有问题的,即像 TStringGrid 一样对接真正的网格。

使用 JvDocking 的步骤:

  1. 将停靠服务器和停靠样式对象放在主(主机窗体)上并连接它们。
  2. 将停靠客户端组件拖放到客户端(要停靠的表单)并将其连接到停靠样式。
  3. 配置停靠服务器的属性。
  4. 运行应用程序。让它创建一个表格。现在将客户端窗体拖到停靠服务器可停靠的区域。看着它很好地停靠。

有关代码演示中的停靠,请参阅 JVCL 示例文件夹中的 JvDocking 演示。

更新

或者您可以使用自 XE 和 XE2 以来内置在 Delphi VCL 中的内容。 XE 和 XE2 包含一个名为 dockex.dpr 的对接演示项目。

在 Win7/Vista 上,演示位于:

C:\Users\Public\Documents\RAD Studio\9.0\Samples\Delphi\VCL\Docking

在此处查看有关 Win XP 的演示:

C:\Documents and Settings\All Users\Documents\RAD Studio\9.0\Samples\Delphi\VCL\Docking

您还应该查看 VCL 中 TDockTabSet 的文档,以及 cmets 中链接的 EDN article,其中包含可以下载 here 的源代码。在我看来,Jedi JvDocking 的东西比 Delphi 附带的 Docking Demo 更专业、更流畅,但内置的东西具有无需安装任何额外东西即可工作的优势。我刚刚尝试了 DockTabSet 演示和内置的停靠演示,它们很慢,而且画得很丑而且闪烁。 JvDocking 看起来很专业。这是你的电话。

【讨论】:

  • 不错的答案,但TDockTabSet 现在不提供选项卡式停靠和“抓取栏”吗? (实际上,我认为它提供了您提到的所有“遗漏”,或者 遗漏了什么?(双关语意 ))。
  • 我已经尝试过 TDockTabSet 和内置的 VCL dockex 演示,我坦率的看法是它们有缺陷、丑陋,并且在我将它们放入我自己的应用程序之前需要做很多工作。此外,我似乎无法让他们进行实际的“Tabset”对接。演示声称表明了这一点,但事实并非如此。我可以让两个浮动窗口停靠到一个浮动选项卡集,但我无法像在 IDE 中使用选项卡集停靠一样获取选项卡。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多