Delphi / C ++ Builder的对接库的build议?

我的团队正在考虑将现有的基于MDI的应用程序转移到更现代化的基于对接的方法。 我们仍然在想,但是我们想把它移植到VS2010的对接和视觉效果上:

VS2010的UI和对接的截图

这具有以下特点:

  • 显示窗口将停靠的混合轮廓
  • docker,以及并排
  • 允许通过在显示docker位置的图像上拖动和释放进行对接(我将其称为下面的“停靠控件”)
  • 看起来也不错(主题/ UI明智)

我无法find与RAD Studio 2010一起使用的高质量的对接库,并且正在寻求关于我还没有find什么库的build议 ,以及如何使用我已经发现的来实现这样的function。

  • 更新:我最终购买了AutomatedQA的对接库 。 我认为这是最好的。 更多细节在下面关于它的部分。

  • 更新2,2011年7月:这个问题看着每一个可用于Delphi / C + + Builder的停靠库,所以我试图保持它最新。 我意识到两个变化:
    • 现在拥有AutomatedQA的SmartBear拥有终止AutomatedQA的对接库 。 这是我build议买的一个。 他们正在考虑公开采购。
    • DevExpress对接(这使得它不值得购买)的一个问题是它缺乏对VS2008 / 10型对接的支持,有一个对接小部件,当你拖动透明覆盖,等等。 他们现在正在实施它 。 正因为如此,由于AQDocking不再销售,如果我现在问这个问题,我接受的答案是购买DevExpress Docking

我find了以下库。 这里有一个概述:

内置的VCL对接

这允许窗体停靠在其他窗体或TWinControls上,但看起来很基本。 使用XOR绘制的轮廓进行拖动,在Vista和Win7上运行非常糟糕。 有一个TTabDockSet控件的标签式停靠forms,但我无法弄清楚如何控制如何停靠forms的标题呈现一旦停靠。 我认为,并排实施坞站必须手动完成,即时创build新的docksite面板。 RAD Studio IDE的对接窗口比这个有点滑动(例如拖动窗体时的透明矩形),这很奇怪,因为我认为它使用了VCL停靠支持。

JVCL对接

这看起来更像是一个体面的解决scheme,内置的VCL对接。 它支持在任何边缘或客户端上的对接,并在窗体将停靠的位置显示一个alphablended的矩形。

JVCL对接测试程序

这似乎是相当多的错误(放弃第一个顶部的第二个forms是允许的,但冻结了程序),并没有内置的标签式docker支持或任何types的放置位置小部件。

LMD对接套件

这看起来很有希望:虽然它似乎不直接停靠forms,它有停靠面板和控件/框架放置在那。 现有的表单可以被迁移到框架。 它还有一个停靠小部件和标签式停靠支持。

然而,演示似乎是相当不可靠的。 我已经安装了最新的评估版本,并且使用停靠站点和多个面板创build一个新项目,然后按“运行”会导致以下情况:

LMD对接

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

DevExpress ExpressDocking

我对此抱有很高的期望:我从来没有使用过任何DevExpress控件,但是他们有良好的声誉。 但他们的演示程序真的令人失望:

DevExpress对接

控制是flickery,并且似乎与Windows主题,即使使用XP风格。 它确实有标签式的对接,但它使用异或轮廓 – 在XP或Vista上不能正常工作。 它也没有任何forms的停靠部件。 坦率地说,它看起来从Windows XP开始就没有更新过。 2011年7月更新: 正在改进 。

AutomatedQA / SmartBear对接库

到目前为止,这是所有图书馆中最有前途的。

AutomatedQA对接库

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

我已经和他们的支持小组联系过了,他们指着我这个主题 。 我还发现另一个线索与客户问同样的事情 。 我已经回信,希望听到更好的消息。 我并不热衷于推荐我们购买我无法评估的产品,特别是当我们的IDE不支持时。

  • 更新:我已经结束了购买这个图书馆。 尽pipe存在问题的评估(它在D2007中有效,而且我有一个副本),它似乎是所有库最容易使用的,也是最强大的 – 例如为它编写主题很容易。 我肯定会推荐它,如果你还需要select一个停靠库。

  • 2011年7月更新: 这个库不再被出售,但很快就会被开源 。

我错过了什么?

这就是我迄今为止发现的一切。 现在怎么办?

  • 我错过了Delphi / C ++ Builder / RAD Studio 2010的任何好的停靠库吗?
  • 我到目前为止看过的库中有没有遗漏任何function? 像“你错过了FooBar”或“JVCL确实有一个停靠小部件,你可以像这样使用它…”这样的答案听起来非常棒。
  • 下一步你会推荐什么?

感谢您的input :)

我已经使用JCL,我有LMD,DevExpress和自动QA Docking Library。

最近你会发现,将满足您的需要是AutomatedQA对接库。 我在我的项目中使用它。

下一步,购买AutomatedQA Library 🙂

从一个快乐的客户。

我是Jedi JVCL的开发者,我在自己的商业内部项目中使用了JvDocking,并且发现它是稳定可靠的。

而且,它是免费的。 这很容易延伸。 它创造了一个与Visual Studio 2008时代对接一样的外观和感觉。

我还没有find一个能做所有我想做的事情的库,所以在做了一些试验之后,我发现我可以通过使用本机VCL Docking(NVCLD)控件进行一系列自定义修改和一些附加function控制。

以下列出了让NVCLD以我想要的方式工作的一些事情。 我在版本之间移植的时候没有太多问题,但是那是因为我也有了src。

如果你不打算自己推出,或者你真的想使用第三方库,那么你可能会停止阅读其余的部分。 🙂

其他组件:

  1. TDockPanel

    这个重大修改的对接面板是主力我的系统。 我在网上find了原文,但是为了给我的需要提供更大的灵活性,我修改了它。

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

    通过为我的对接表单使用自定义的基类并在需要时inheritance它,我对所有的后代表单做了更less的修改。

自定义修改

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

  1. 透明的对接表单

    默认情况下(肯定是在2009年以前),NVCLD不支持透明表单的移动。 几年前发布了一个JVCL补丁,补充说,对JVCL的支持非常简单,可以将其纳入NVLCD补丁。

  2. 停靠pipe理器

    默认的对接pipe理器(肯定是在2009之前)不允许更新/自定义button图像或对接头的更改。 这在D2009被纠正了,我相信当虚拟的必要的方法。

  3. 标签对接

    为了支持额外的停靠组件,我需要修改DockTabSet.pas文件以支持附加组件使用的其他停靠属性。 当Docking Manager如前所述进行修改时,大部分情况都得到了纠正。

正如我所说的大部分这些变化,我直接对delphiSrc文件,你不应该需要这样做的新版本的delphi。 我的观点是,通过一点点的工作,你可以有一个相当强大的对接系统,而不是诉诸使用第三方库。 不是说他们中的任何一个都有什么问题,但是除非我别无select,或者没有时间按照我的方式工作,否则我宁愿不使用它们。