46

我的团队目前正在考虑将我们现有的基于 MDI 的应用程序迁移到更现代的基于对接的方法。我们还在考虑,但我们想把它移到类似 VS2010 的对接和视觉外观上:

VS2010 UI及对接截图

它具有以下特点:

  • 显示窗口将停靠的混合轮廓
  • 停靠在选项卡中,以及并排
  • 允许通过在显示停靠位置的图像上拖动和释放来停靠(我在下面将其称为“停靠小部件”)
  • 看起来也不错(主题/ UI 方面)

我无法找到与 RAD Studio 2010 一起使用的优质停靠库,我正在寻求关于我没有找到哪些库或如何使用我找到的库来实现类似目标的建议。

  • 更新:我最终购买了AutomatedQA 的对接库。我认为这是最好的。下面有关它的部分中的更多详细信息。

  • 2011 年 7 月更新 2:这个问题查看了可用于 Delphi/C++Builder 的每个对接库,因此我试图使其保持最新。我知道的两个变化:
    • 现在拥有 AutomatedQA 的 SmartBear 已经终止了 AutomatedQA 的对接库。这是我推荐购买的一款。他们正在考虑开源它。
    • 我在 DevExpress 对接时遇到的一个问题(使其不值得购买)是它缺乏对 VS2008/10 式对接的支持,它带有一个对接小部件、拖动时的透明覆盖等。 他们现在正在实施它。正因为如此,并且由于 AQDocking 不再出售,如果我现在问这个问题,我接受的答案是购买 DevExpress Docking

我找到了以下库。这是一个概述:

内置 VCL 对接

这允许表单停靠在其他表单或 TWinControls 上,但看起来非常基本。使用 XOR 绘制轮廓拖动表单,这在 Vista 和 Win7 上效果很差。有一个用于选项卡式停靠表单的 TTabDockSet 控件,但我无法弄清楚如何控制停靠表单的标题在停靠后如何呈现。我认为实现并排停靠必须手动完成,动态创建新的停靠站点面板。RAD Studio IDE 的停靠窗口比这更漂亮(例如,拖动表单时的透明矩形),这很奇怪,因为我认为它使用了 VCL 停靠支持。

JVCL对接

这看起来更像是内置 VCL 对接的一个不错的解决方案。它支持停靠在任何边缘或客户端上,并在窗体停靠的地方显示一个字母混合矩形。

JVCL对接测试程序

它似乎有很多错误(允许在第一个表单上放置第二个表单,但会冻结程序)并且没有内置的选项卡式停靠支持或任何类型的放置位置小部件。

LMD 对接包

这看起来很有希望:虽然它似乎没有直接停靠表单,但它有停靠面板和控件/框架放置在上面。现有的表格可以迁移到框架中。它还具有停靠小部件和选项卡式停靠支持。

但是,该演示似乎非常不可靠。我已经安装了最新的评估版本,并创建了一个带有停靠站点和几个面板的新项目,然后按 Run 会导致以下情况:

LMD 对接

这在表单组件流中崩溃。目视检查 DFM 文件并没有显示任何错误,但是可能导致它的布局信息有一个不透明的二进制 blob。这在评估版本中并不是特别令人鼓舞。

DevExpress 快速对接

我对此寄予厚望:我以前从未使用过任何 DevExpress 控件,但它们的声誉很好。但他们的演示程序确实令人失望:

DevExpress 对接

即使使用 XP 样式,该控件也是闪烁的,并且似乎不适用于 Windows。它确实有选项卡式对接,但它使用异或轮廓——这在 XP 或 Vista 上不能很好地工作。它也没有任何类型的停靠小部件。坦率地说,它看起来自 Windows XP 时代以来就没有更新过。2011 年 7 月更新: 正在改进

AutomatedQA / SmartBear 对接库

这是迄今为止所有库中最有前途的。

自动化QA对接库

我经常使用AQTime,这是一个出色的分析器,似乎是使用他们自己的对接库编写的,而且效果很好。但是,最新版本的对接库试用下载适用于 RAD Studio 2009,安装到 2010 时给出的建议是它不受支持,您应该重新编译源代码。该演示没有源代码,我们没有RS2009,除非我们这样做,否则安装程序拒绝安装,即使我们设法安装它,我们也无法使用它,因为我们需要重新编译不存在的来源。

我已经与他们的支持团队取得了联系,他们将我指向了这个帖子我还发现了另一个客户问同样问题的线程。我已经回复并希望听到更好的消息。我不想推荐我们购买我无法评估的产品,尤其是当我们的 IDE 不支持它时。

  • 更新:我最终购买了这个库。尽管评估存在问题(它在 D2007 中有效,我有一份副本),但它似乎是所有库中最容易使用的,也是最强大的——例如,为它编写主题很容易。如果您也需要选择对接库,我肯定会推荐它。

  • 2011 年 7 月更新: 该库不再出售,但可能很快就会开源

我错过了什么?

这就是我到目前为止所发现的一切。现在怎么办?

  • 我是否错过了 Delphi / C++ Builder / RAD Studio 2010 的任何好的对接库?
  • 到目前为止,我是否错过了我看过的库中的任何功能?像“你错过了 FooBar”或“JVCL 确实有一个停靠小部件,你可以像这样使用它......”这样的答案会非常棒。
  • 你会推荐什么作为我的下一步?

感谢您的输入 :)

4

3 回答 3

7

我是一名绝地 JVCL 开发人员,我在自己的商业内部项目中使用过 JvDocking,发现它可靠可靠。

此外,它是免费的。它很容易扩展。它创建的外观和感觉与 Visual Studio 2008 时代对接的外观和感觉大致相同。

于 2011-10-27T20:22:59.373 回答
3

我还没有找到一个库可以做我想做的所有事情,所以在做了一些实验后,我发现我可以通过使用带有一系列自定义修改和一些附加的 Native VCL Docking (NVCLD) 控件来完成我想要做的几乎所有事情控制。

以下是我在让 NVCLD 以我想要的方式工作时遇到的问题。我在版本之间移植没有很多问题,但那是因为我也有 src。

如果您不想自己动手,或者您真的想使用 3rd 方库,那么您可能会停止阅读其余部分。:)

附加组件:

  1. TDockPanel

    这个经过大量修改的对接面板是我的系统的主力。我在网上找到了原件,但后来对其进行了修改,以便为我的需要提供更大的灵活性。

  2. 自定义对接表单(基本表单)

    通过为我的停靠表单使用自定义基类并在需要时继承它,我对所有后代表单的修改更少。

自定义修改

这些是对 NVCLD 组件本身的 .pas 文件的修改。由于从 D2009 开始对基本控件进行了一些增强,这些修改中的大部分不再需要进行。您应该能够只创建一个新的后代并在那里实现更改,而不是直接修改默认的 src 文件。

  1. 透明对接表格

    默认情况下(肯定是 2009 年之前),NVCLD 不支持透明表单移动。几年前发布了一个 JVCL 补丁,该补丁添加了对 JVCL 的支持,该支持很容易合并到 NVLCD 补丁中。

  2. 对接管理器

    默认停靠管理器(肯定是 2009 年之前的)不允许更新/自定义按钮图像或停靠标题更改。这在 D2009 中得到了纠正,我相信在必要的方法中进行了虚拟化。

  3. 选项卡式对接

    为了支持附加停靠组件,我需要修改 DockTabSet.pas 文件以支持附加组件使用的附加停靠属性。当对接管理器如前所述进行修改时,大部分问题已得到纠正。

正如我所说的那样,我直接对 Delphi Src 文件进行了大部分更改,对于较新版本的 Delphi,您不需要这样做。我的观点是,通过预先做一些工作,您可以拥有一个相当强大的对接系统,而无需使用 3rd 方库。并不是说它们中的任何一个有什么问题,但我宁愿不使用它们,除非我别无选择或没有时间让它按我的方式工作。

于 2010-08-03T18:15:59.047 回答
2

我使用过 JCL、LMD、DevExpress 和自动化 QA 对接库。

您会发现最能满足您需求的是 AutomatedQA Docking Library。我在我的一个项目中使用它。

下一步,购买 AutomatedQA 库 :)

来自一个快乐的客户。

于 2010-08-03T10:09:17.153 回答