Dock library recommendations for Delphi / C ++ Builder?

My team is currently thinking of porting our existing MDI-based application to a more modern docking-based approach. We are still thinking, but we would like to move it to something like a docking VS2010 and a visual view:

VS2010 UI and docking screenshot

It has the following functions:

  • Shows a mixed layout in which the window will dock.
  • Tabbed docks as well as side by side
  • Allows docking by dragging and dropping an image displaying the position of the dock (I call this the “dock widget” below)
  • It looks good (theme / user interface)

I'm having trouble finding a high-quality docking library for use with RAD Studio 2010, and I'm looking for advice on either what I didn't find in the library, or on how to use the ones I found something like that.




  • Update 2, July 2011 . This question examined every dock library available for Delphi / C ++ Builder, so I try to keep it up to date. Two changes that I know of:
    • SmartBear, which now has AutomatedQA, has a complete AutomatedQA docking library . This is the one I recommended buying. They are considering open access to it.
    • The only problem I encountered with the DevExpress docking station (which made it unworthy) was the lack of support for the VS2008 / 10-style docking station with dock widgets, transparent overlay when dragging and dropping, etc. They are now implementing it . Because of this, and since AQDocking is no longer for sale, if I asked this question, now my accepted answer would be to buy DevExpress Docking .



I found the following libraries. Here is an overview:

Integrated VCL Docking

This allows the forms to dock with other forms or TWinControls, but seems to be fairly simple. Drag and drop forms using the colorized XOR scheme, which works very poorly on Vista and Win7. There is a TTabDockSet control for docked form tabs, but I cannot figure out how to control how docked header forms are formed after docking. I think side-by-side docking should be done manually, creating new dock panels on the fly. The docking windows of the RAD Studio IDE are slightly weaker than this (transparent rectangles when dragging and dropping shapes, for example), which is odd since I thought it used VCL docking support.

JVCL Docking

It looks a little more worthy of the solution, which is the integrated VCL dock. It supports docking with any edge or client and shows a rectangle with the alphabet in which the shape will be docked.

JVCL docking test program

It seems like it's quite difficult (dropping the second form over the first is allowed, but freezes the program) and does not have built-in support for tabbed support or any kind of drop-location widget.

LMD Docking Pack

This looks promising: while it does not seem to have immediate dock forms, docking panels are installed on it, and controls / frames are installed on them. Existing forms can be transferred to frames. It also has a dock widget and tabbed tab support.

However, the demonstration seems rather unreliable. I have the latest evaluation version installed and creating a new project with a dock site and several panels, and clicking Run causes the following:

LMD docking

This is a failure in the flow of form components. Visual analysis of the DFM file does not show anything bad, but there is an opaque binary drop for layout information that can cause it. This is not particularly encouraging in the evaluation version.

DevExpress ExpressDocking

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

DevExpress docking

The control is flickering and doesn't seem to work very well with Windows, even using the XP style. It has a docking interface, but uses the XOR-ed scheme - something that works poorly on XP or Vista. It also has no widgets. Honestly, it seems like it has not been updated since Windows XP. Update July 2011: This is improved .

AutomatedQA / SmartBear Docking Library

This is the most promising of all libraries.

AutomatedQA docking library

I regularly use AQTime , a great profiler that seems to be written using its own docking library, and it works well. However, the latest version of the trial download of the library for the dock for RAD Studio 2009, and the advice given for installation in 2010, is that it is not supported, and you must recompile the source code. The demonstration does not come with the source, and we do not have RS2009, and the installer refuses to install if we do not do this, and even if we managed to install it, we will not be able to use it, since we will need to recompile the nonexistent source.

I contacted my support team and they pointed me to this thread . I also found another chain with customers who ask for almost the same thing . I answered and hope to hear the best news. I do not recommend buying a product that I cannot evaluate, especially if it is not supported for our development environment.

  • Update: I purchased this library. Despite the problems associated with the evaluation (it works in D2007, and I had a copy of it), it seems the easiest way to use all the libraries, as well as the most powerful ones - for example, it's easy to write a theme for it. I would definitely recommend it if you need to also select the dock library.

  • July 2011 Update: This library is no longer for sale, but may be open soon .

What did I miss?

That is all I have found so far. Now what?

  • Did I miss any good docking libraries for Delphi / C ++ Builder / RAD Studio 2010?
  • Did I miss any features in the libraries that I have looked at so far? An answer like “You missed FooBar” or “The JVCL really has a dock widget and you can use it like that ...” would be pretty surprising to hear.
  • What would you recommend as the next step?

Thanks for your input :)

+45
delphi c ++ builder dock dockpanel-suite
Aug 03 '10 at 7:06
source share
3 answers

I used JCL, I have LMD, DevExpress and the QA auto dock library.

The closest you find that will suit your needs is the AutomatedQA Doping Library. I use it in my work for one of my projects.

Next step, buy the AutomatedQA library :)

from a happy customer.

+2
Aug 03 '10 at 10:09
source share

I am a JEDI JEDI developer, and I used JvDocking in my own commercial projects, and found it reliable and reliable.

In addition, it is free. It is easy to expand. It creates the look in much the same way as the docking of the visual studio of 2008.

+5
Oct 27 '11 at 20:22
source share

I did not find any library that does everything that I would like, so after some experimentation I found that I can do almost everything that I wanted using Native VCL Docking controls (NVCLD) with a series of custom modifications and some additional elements management.

The following is a list of things that I used to get NVCLD to work the way I wanted. I didn’t have many problems migrating between versions, but that is because I also have src.

If you do not want to collapse your own or you really want to use a third-party library, you may possibly stop reading the rest of this. :)

Additional components:

  • TDockPanel

    This highly modified docking panel is the workhorse of my system. I found the original on the net, but changed it since then to provide more flexibility for my needs.

  • Custom docking forms (basic form)

    Using my own base class for my dock forms and inheriting it if necessary, I have fewer modifications for all descendant forms.

Custom changes

These are changes to the .pas files of the NVCLD components themselves. Most of these changes no longer need to be made due to some improvements made to the basic controls starting with D2009. You should just create a new child and implement the changes there, instead of directly modifying the default src files.

  • Transparent docking forms

    By default (probably until 2009), NVCLD does not support transparent form movement. A couple of years ago, the JVCL patch was released, which added support for the JVCL, which was easy to include in the NVLCD patch.

  • Dock manager

    By default, the dock manager (probably before 2009) did not allow new or custom button images or changes to docking headers. This was fixed in D2009, I believe when you need the necessary methods that are made virtual.

  • Hidden docking

    To support additional components of the docking station, I needed to modify the DockTabSet.pas file to support additional docking properties used by additional components. Most of them were fixed when the Docking Manager was changed, as mentioned earlier.

Since I outlined most of these changes, I directly accessed Delphi Src files, and you do not need to do this for newer versions of Delphi. I want to say that with little effort you can have a fairly reliable docking system without resorting to using a third-party library. It’s not that there was anything wrong with someone, but I prefer not to use them if I have no other choice or I don’t have time to work in my way.

+3
Aug 03 '10 at 18:15
source share



All Articles