views:

226

answers:

2

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.

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.

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.

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 :)

+1  A: 

hi, 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.

buttercup
Thanks buttercup. I will probably end up doing this - it just would have been nicer to try the components first :) A recommendation is good though.
David M
I've ended up buying AutomatedQA's docking library, much as you suggested.
David M
+2  A: 
Ryan J. Mills
Thanks Ryan! Would it be possible to provide source snippets for some of those changes, or a link to where I can find more info? The main reason I want to buy a component set is to avoid reinventing the wheel... too much other work to do :p
David M
@David M: Sure! I can try to create a small demo app w/src to show what I've done and what I'm talking about. The code is part of a large project so give me a day or two to come up with something.
Ryan J. Mills
Thanks! That'd be awesome.
David M
@David M: It is going to take me a little more time. As I'm having some trouble getting a demo together for you. I've managed to get about half the demo written. But I can't find enough time during the day to do it. Work keeps getting in the way. <grin>
Ryan J. Mills
That's ok, and thanks! I have ended up buying the AQ docking library - the evaluation worked in D2007, and it seems pretty good. It also saves reinventing the wheel a lot. But, if you happen to find the time for this, I'd still be interested in the code, just for interest / technique's sake.
David M