【发布时间】:2011-03-24 14:01:22
【问题描述】:
我的团队目前正在考虑将我们现有的基于 MDI 的应用程序迁移到更现代、基于停靠的方法。我们仍在考虑,但我们想将其移动到类似于 VS2010 的停靠和视觉外观:
它具有以下特点:
- 在窗口停靠的位置显示混合轮廓
- 停靠到选项卡中,以及并排放置
- 允许通过在显示停靠位置的图像上拖放和释放来停靠(我在下面将其称为“停靠小部件”)
- 看起来也不错(主题/UI 方面)
我在寻找与 RAD Studio 2010 一起使用的优质停靠库时遇到问题,我正在寻求建议关于我没有找到哪些库或如何使用我已经发现可以实现这样的目标。
- 更新:我最终购买了AutomatedQA's docking library。我认为这是最好的。更多详情请参见下文。
-
2011 年 7 月更新 2: 这个问题查看了可用于 Delphi/C++Builder 的每个对接库,因此我试图使其保持最新。我知道的两个变化:
- SmartBear,现在拥有 AutomatedQA,拥有end-of-lifed AutomatedQA's docking library。这是我推荐购买的一款。他们正在考虑将其开源。
- 我在 DevExpress 对接中遇到的一个问题(这使得它不值得购买)是它缺乏对 VS2008/10 风格的对接的支持,它带有一个对接小部件、拖动时的透明覆盖等。They are now implementing it。因此,由于 AQDocking 不再出售,如果我现在问这个问题,我接受的答案是购买 DevExpress Docking。
我找到了以下库。这是一个概述:
内置 VCL 对接
这允许表单停靠在其他表单或 TWinControls 上,但看起来很基本。使用 XOR 绘制轮廓拖动表单,这在 Vista 和 Win7 上效果很差。有一个用于选项卡式停靠表单的 TTabDockSet 控件,但我无法弄清楚如何控制停靠表单的标题在停靠后如何呈现。我认为实现并排停靠必须手动完成,动态创建新的停靠站点面板。 RAD Studio IDE 的停靠窗口比这个更漂亮(例如,拖动表单时的透明矩形),这很奇怪,因为我认为它使用了 VCL 停靠支持。
JVCL docking
这看起来更像是内置 VCL 对接的一个不错的解决方案。它支持停靠在任何边缘或客户端上,并在窗体停靠的位置显示一个字母混合矩形。
它似乎有很多问题(允许在第一个表单上放置第二个表单,但会冻结程序)并且没有内置的选项卡式停靠支持或任何类型的放置位置小部件。
LMD Docking Pack
这看起来很有希望:虽然它似乎没有直接停靠表单,但它有停靠面板和控件/框架放置在上面。现有的表格可以迁移到框架中。它还具有停靠小部件和选项卡式停靠支持。
但是,演示似乎很不可靠。我已经安装了最新的评估版本,并创建了一个带有停靠站点和几个面板的新项目,然后按 Run 会导致以下结果:
这在表单组件流中崩溃。目视检查 DFM 文件并没有显示任何错误,但是可能导致它的布局信息有一个不透明的二进制 blob。这在评估版中并不是特别令人鼓舞。
DevExpress ExpressDocking
我对此寄予厚望:我以前从未使用过任何 DevExpress 控件,但它们的声誉很好。但他们的演示程序确实令人失望:
该控件闪烁,并且似乎与 Windows 的主题不匹配,即使使用 XP 样式也是如此。它确实有选项卡式对接,但它使用异或轮廓——这在 XP 或 Vista 上不能很好地工作。它也没有任何类型的停靠小部件。坦率地说,它看起来自 Windows XP 时代以来就没有更新过。 2011 年 7 月更新: This is being improved。
AutomatedQA / SmartBear docking library
这是迄今为止所有库中最有前途的。
我经常使用AQTime,这是一个出色的分析器,似乎是使用他们自己的对接库编写的,并且运行良好。但是,对接库试用下载的最新版本适用于 RAD Studio 2009,安装到 2010 的建议是它不受支持,您应该重新编译源代码。该演示没有源代码,我们没有RS2009,除非我们这样做,否则安装程序拒绝安装,即使我们设法安装它,我们也无法使用它,因为我们需要重新编译来源不存在。
我已与他们的支持团队取得联系,他们将我指向this thread。我还找到了customers asking much the same thing 的另一个线程。我已经回复并希望听到更好的消息。我不想推荐我们购买我无法评估的产品,尤其是当我们的 IDE 不支持它时。
更新:我最终购买了这个库。尽管评估存在问题(它在 D2007 中工作,我有一份副本),但它似乎是所有库中最容易使用的,也是最强大的——例如,为它编写主题很容易。如果您也需要选择停靠库,我绝对会推荐它。
2011 年 7 月更新: This library is no longer being sold, but may be open-sourced soon。
我错过了什么?
这就是我目前所发现的一切。现在呢?
- 我是否错过了 Delphi / C++ Builder / RAD Studio 2010 的任何好的对接库?
- 到目前为止,我是否遗漏了我查看过的库中的任何功能?像“你错过了 FooBar”或“JVCL 确实有一个停靠小部件,你可以像这样使用它......”这样的回答会非常棒。
- 下一步你会推荐什么?
感谢您的意见:)
【问题讨论】:
-
+1。确实是很好的研究。您错过了 TMS 组件。我无法评论易用性或性能,但它们往往具有“好看”的组件。对接组件可以在tmssoftware.com/site/advtoolbar.asp找到
-
我正准备为 DevExpress 库辩护,直到我自己尝试了演示。与他们为 .net 设置的 XtraBars 控件集相比,它绝对看起来“更老”。但是对接指示器的事情已经被要求并被接受——但还没有发布日期。如果您使用他们的蒙皮支持,它看起来会稍微好一些。 FWIW 我们订阅了 DevExpress VCL,它确实非常好 - 但它在某些领域确实落后于它的 .net 表亲。
-
嗨 Lieven - TMS 控件是否支持表单停靠?我下载了演示,它似乎只有工具栏和菜单。
-
更新到 2011 年 7 月的更新:2013 年 4 月(!)Smartbear 说“我们现在有一个内部协议,可以发布源代码供社区使用。” smartbear.com/forums/f57/t46093/tp2/adl-end-of-life#79234
标签: delphi c++builder dock dockpanel-suite