有没有 Delphi / C++Builder 的对接库推荐?

发布于 2024-09-12 05:40:00 字数 4236 浏览 6 评论 0原文

我的团队目前正在考虑将我们现有的基于 MDI 的应用程序迁移到更现代的、基于对接的方法。我们仍在考虑,但我们希望将其移动到类似 VS2010 的对接和视觉外观:

VS2010 UI 和对接屏幕截图

它具有以下功能:

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

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

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

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

我找到了以下库。概述如下:

内置 VCL 停靠

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

JVCL 对接

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

JVCL 对接测试程序

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

LMD Docking Pack

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

然而,该演示似乎相当不可靠。我已经安装了最新的评估版本,并且创建一个带有停靠站点和多个面板的新项目并按“运行”会导致以下结果:

“LMD

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

DevExpress ExpressDocking

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

DevExpress docking

控件闪烁,似乎与 Windows 主题不太吻合,甚至使用XP风格。它确实有选项卡式对接,但它使用异或轮廓 - 这在 XP 或 Vista 上效果不佳。它也没有任何类型的对接小部件。坦率地说,从 Windows XP 时代以来,它似乎就没有更新过。 2011 年 7 月更新: 此功能正在改进

AutomatedQA / SmartBear 对接库

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

AutomatedQA 对接库

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

我一直在与他们的支持团队联系,他们向我指出了此帖子。我还发现了另一个线程

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

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

我错过了什么?

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

  • 我是否错过了 Delphi / C++ Builder / RAD Studio 2010 的任何优秀对接库?
  • 到目前为止,我是否错过了我所浏览过的库中的任何功能?像“你错过了 FooBar”或“JVCL 确实有一个对接小部件,你可以像这样使用它......”这样的答案听起来会很棒。
  • 您建议我下一步做什么?

感谢您的投入:)

My team is currently thinking of moving our existing MDI-based application to a more modern, docking-based approach. We're still thinking, but we'd like to move it to something like VS2010's docking and visual look:

VS2010 UI and docking screenshot

This has the following features:

  • Shows a blended outline where the window will dock
  • Docks into tabs, as well as side-by-side
  • Allows docking by dragging and releasing over an image showing the dock position (I call this a 'docking widget' below)
  • Looks pretty good too (theme / UI-wise)

I am having trouble finding a good-quality docking library to use with RAD Studio 2010 and am seeking advice on either what library/ies I haven't found, or how to use the ones I have found to achieve something like this.


  • Update 2, July 2011: This question looked at every single docking library available for Delphi/C++Builder, so I'm trying to keep it up to date. Two changes that I'm aware of:
    • SmartBear, who now own AutomatedQA, have end-of-lifed AutomatedQA's docking library. This the one one I recommended buying. They are considering open-sourcing it.
    • The one problem I had with DevExpress docking (that made it not worthy buying) was its lack of support for VS2008/10-style docking, with a docking widget, transparent overlay as you dragged, etc. They are now implementing it. Because of this, and since AQDocking is no longer being sold, if I asked this question now my accepted answer would be to buy DevExpress Docking.

I've found the following libraries. Here's an overview:

Inbuilt VCL docking

This allows forms to be docked on other forms or TWinControls, but appears to be quite basic. Forms drag using an XOR painted outline, which works very badly on Vista and Win7. There is a TTabDockSet control for tabbed docked forms, but I can't figure out how to control how the docked forms' titles render once docked. I think implementing docking side-by-side will have to be done manually, creating new docksite panels on the fly. The RAD Studio IDE's docking windows are a bit slicker than this (transparent rectangles when dragging a form, for example) which is odd, since I thought it used the VCL docking support.

JVCL docking

This looks a bit more of a decent solution that the inbuilt VCL docking. It supports docking on any edge or the client, and shows an alphablended rectangle where the form will dock.

JVCL docking test program

It appears to be quite buggy (dropping a second form on top of a first is allowed, but freezes the program) and has no inbuilt tabbed dock support or any kind of drop-location widget.

LMD Docking Pack

This looks promising: while it doesn't seem to directly dock forms, it has docking panels and controls / frames are placed on that. Existing forms could be migrated to frames. It also has a docking widget and tabbed dock support.

However, the demo seems to be quite unreliable. I've got the latest evaluation version installed, and creating a new project with a dock site and several panels and pressing Run causes the following:

LMD docking

This is crashing in the form component streaming. Visually examining the DFM file doesn't show anything wrong, but there's an opaque binary blob for the layout information that may be causing it. This is not especially encouraging in an evaluation version.

DevExpress ExpressDocking

I had high hopes for this: I've never used any DevExpress controls before but they have a good reputation. But their demo program was really disappointing:

DevExpress docking

The control is flickery and doesn't seem to theme well with Windows, even using the XP style. It does have tabbed docking but it uses an XOR-ed outline - something that doesn't work well on XP or Vista. It also does not have any sort of docking widget. Frankly, it looks like it hasn't been updated since the Windows XP days. Update July 2011: This is being improved.

AutomatedQA / SmartBear docking library

This is the most promising of all the libraries so far.

AutomatedQA docking library

I regularly use AQTime, an excellent profiler which appears to be written using their own docking library, and it works well. However, the latest version of the docking library trial download is for RAD Studio 2009, and the advice given for installing into 2010 is that it's unsupported, and you should recompile the source. The demo doesn't come with source, and we don't have RS2009, and the installer refuses to install unless we do, and even if we manged to get it to install we can't use it since we would need to recompile the non-existent source.

I've been in touch with their support team, and they pointed me to this thread. I also found another thread with customers asking much the same thing. I've replied and hope to hear better news. I'm not keen to recommend we buy a product I can't evaluate, especially when it's not supported for our IDE.

  • Update: I have ended up buying this library. In spite of problems evaluating (it works in D2007, and I had a copy of that) it seems the easiest to use of all the libraries, and also the most powerful - it's easy to write a theme for it, for example. I'd definitely recommend it if you need to select a docking library too.

  • Update July 2011: This library is no longer being sold, but may be open-sourced soon.

What have I missed?

That's everything I've found so far. What now?

  • Have I missed any good docking libraries for Delphi / C++ Builder / RAD Studio 2010?
  • Have I missed any features in the libraries I've lookd at so far? An answer like "You missed FooBar" or "JVCL does indeed have a docking widget, and you can use it like so..." would be pretty awesome to hear.
  • What would you recommend as my next step?

Thanks for your input :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

流心雨 2024-09-19 05:40:00

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

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

I am a jedi JVCL developer, and I have used JvDocking in my own commercial in-house projects, and found it to be solid and reliable.

Also, it's free. It's easy to extend. It creates a look and feel about the same as visual studio 2008 era docking.

究竟谁懂我的在乎 2024-09-19 05:40:00

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

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

如果您不想自己开发或者确实想使用第三方库,那么您可能可以停止阅读本文的其余部分。 :)

其他组件:

  1. TDockPanel

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

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

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

自定义修改

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

  1. 透明对接表单

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

  2. 对接管理器

    默认的对接管理器(当然是 2009 年之前的)不允许更新/自定义按钮图像或对接标题更改。我相信,当必要的方法变得虚拟时,这个问题在 D2009 中得到了纠正。

  3. 选项卡式对接

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

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

I haven't found a single library that does everything that I would like, so after doing some experimenting I found that I could do almost everything I wanted by using the Native VCL Docking (NVCLD) controls with a series of custom modifications and some additional controls.

The following is a list things that I've run across in getting the NVCLD to work the way I wanted. I haven't had many problems porting between versions, but that's because I've got the src as well.

If your not looking to roll your own or you really want to use a 3rd party library then you can probably stop reading the rest of this. :)

Additional Components:

  1. TDockPanel

    This heavily modified docking panel is the workhorse my system. I found the original on the net but have modified it since to provide a little greater flexibility for my needs.

  2. Custom Docking Forms (Base form)

    By using a custom base class for my docking forms and inheriting it when needed I have less modifications to do on all of the descendant forms.

Custom Modifications

These are modifications to the .pas files of the NVCLD components themselves. Most of these modifications no longer have to be done because of some enhancements made to the base controls starting with D2009. You should be able to just create a new descendant and implement the changes in the there instead of modifying the default src files directly.

  1. Transparent Docking Forms

    By default (pre-2009 for sure) the NVCLD doesn't support the transparent form movement. There was a JVCL patch released a couple of years back that added that support to the JVCL which was simple to incorporate into a NVLCD patch.

  2. Docking Manager

    The default docking manager (pre-2009 for sure) didn't allow for newer/custom button images or docking header changes. This was rectified in D2009 I believe when the necessary methods where made virtual.

  3. Tabbed Docking

    To support the Additional docking components I needed to modify the DockTabSet.pas file to support additional docking properties used by the additional components. Most of this was corrected when the Docking Manager was modified as mentions previously.

As I stated most of these changes I made directly to the Delphi Src files and you shouldn't need to do that for newer versions of Delphi. My point is that with a little bit of work up front you can have a fairly robust docking system with out resorting to using a 3rd party library. Not that there is anything wrong with any of them, but I prefer not to use them unless I have no other choice or don't have the time to make it work my way.

伤感在游骋 2024-09-19 05:40:00

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

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

下一步,

从满意的客户那里购买 AutomatedQA 库:)。

I have used JCL, I have LMD, DevExpress and Automated QA Docking Library.

The closest you will find that will meet your need is the AutomatedQA Docking Library. I use it in my work for one of my projects.

Your next step, buy the AutomatedQA Library :)

from a Happy Customer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文