我的团队目前正在考虑将我们现有的基于 MDI 的应用程序迁移到更现代的基于对接的方法。我们还在考虑,但我们想把它移到类似 VS2010 的对接和视觉外观上:
它具有以下特点:
- 显示窗口将停靠的混合轮廓
- 停靠在选项卡中,以及并排
- 允许通过在显示停靠位置的图像上拖动和释放来停靠(我在下面将其称为“停靠小部件”)
- 看起来也不错(主题/ 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 对接的一个不错的解决方案。它支持停靠在任何边缘或客户端上,并在窗体停靠的地方显示一个字母混合矩形。
它似乎有很多错误(允许在第一个表单上放置第二个表单,但会冻结程序)并且没有内置的选项卡式停靠支持或任何类型的放置位置小部件。
LMD 对接包
这看起来很有希望:虽然它似乎没有直接停靠表单,但它有停靠面板和控件/框架放置在上面。现有的表格可以迁移到框架中。它还具有停靠小部件和选项卡式停靠支持。
但是,该演示似乎非常不可靠。我已经安装了最新的评估版本,并创建了一个带有停靠站点和几个面板的新项目,然后按 Run 会导致以下情况:
这在表单组件流中崩溃。目视检查 DFM 文件并没有显示任何错误,但是可能导致它的布局信息有一个不透明的二进制 blob。这在评估版本中并不是特别令人鼓舞。
DevExpress 快速对接
我对此寄予厚望:我以前从未使用过任何 DevExpress 控件,但它们的声誉很好。但他们的演示程序确实令人失望:
即使使用 XP 样式,该控件也是闪烁的,并且似乎不适用于 Windows。它确实有选项卡式对接,但它使用异或轮廓——这在 XP 或 Vista 上不能很好地工作。它也没有任何类型的停靠小部件。坦率地说,它看起来自 Windows XP 时代以来就没有更新过。2011 年 7 月更新: 正在改进。
AutomatedQA / SmartBear 对接库
这是迄今为止所有库中最有前途的。
我经常使用AQTime,这是一个出色的分析器,似乎是使用他们自己的对接库编写的,而且效果很好。但是,最新版本的对接库试用下载适用于 RAD Studio 2009,安装到 2010 时给出的建议是它不受支持,您应该重新编译源代码。该演示没有源代码,我们没有RS2009,除非我们这样做,否则安装程序拒绝安装,即使我们设法安装它,我们也无法使用它,因为我们需要重新编译不存在的来源。
我已经与他们的支持团队取得了联系,他们将我指向了这个帖子。我还发现了另一个客户问同样问题的线程。我已经回复并希望听到更好的消息。我不想推荐我们购买我无法评估的产品,尤其是当我们的 IDE 不支持它时。
更新:我最终购买了这个库。尽管评估存在问题(它在 D2007 中有效,我有一份副本),但它似乎是所有库中最容易使用的,也是最强大的——例如,为它编写主题很容易。如果您也需要选择对接库,我肯定会推荐它。
2011 年 7 月更新: 该库不再出售,但可能很快就会开源。
我错过了什么?
这就是我到目前为止所发现的一切。现在怎么办?
- 我是否错过了 Delphi / C++ Builder / RAD Studio 2010 的任何好的对接库?
- 到目前为止,我是否错过了我看过的库中的任何功能?像“你错过了 FooBar”或“JVCL 确实有一个停靠小部件,你可以像这样使用它......”这样的答案会非常棒。
- 你会推荐什么作为我的下一步?
感谢您的输入 :)