Office 2007 Style UI Ribbons: DevExpress or TMS? - delphi

Who provides the better solution for this particular component?

We have been using both. As I see it, each solution has it's pro and contra.
DevExpress
Responsive (as in fast) components.
Adheres to the Microsoft standard.
Clean code.
Very good support
Expensive.
TMS
Not as snappy (as in fast) as DevExpress.
Looking at the code, cleaning-up things wouldn't hurt.
Very good support.
Inexpensive.
In a nutshell, TMS is always very fast in releasing new components (they had a Ribbon months before DevExpress released theirs) but in my opinion at the expense of code quality.
We always have been pleased with both packages. For our latest projects, we are switching to DevExpress though.

I use DevExpress to great effect - good support, good themes, works well.

You didn't wrote something about your delphi version.
In delphi 2009 are ribbons controls integrated. perhaps you should upgrade to d2009 to take also advantage of the generics and the other new language features.
but the integrated ribbons are not powerful as the tms/devExpress components.
at DevExpress you have a 60 Day money back guarantee.
tms is much cheaper.

We're using the TMS components.
At the time we were looking (and I haven't checked DevExpress recently), they were the only one who supported ribbon groups (adding extra ribbon pages with a title that goes up into the title bar).

I'm also a happy user of the DevExpress version. Their support is excelent, I would recommend them. But I have no experience with TMS. Their product and support might be as good or even better :-)

Devexpress components are very intrusive, and make your .exe bigger than TMS does. Also, Devexpress are more complicated to use than TMS.
So I think that I would choose TMS without any doubt.

Related

How do I make TSpeedButton honor Windows themes?

I have an old app (Delphi 5) which I want to give it some changes.
I have set a manifest for it, but speedbuttons are not following the Windows theme. What should I do?
Delphi 5 doesn't know anything about Windows visual styles (no big surprise :-)). If you really want to stay with D5, your best bet is probably to use Mike Lischke's Windows XP Theme Manager.
Your best bet, in my view, is to upgrade to the latest Delphi which fully supports XP themes out of the box. Trying to get a Delphi 5 app to look native on modern Windows is quite a labour (I have done it myself so I speak from experience) and if you can upgrade it will be the least painful route.
Even though this post is not answering directly your question, MAYBE it will help you somehow:
I agree with others that the easy way will be to upgrade to the latest edition of Delphi. However, this is a fast (if you ignore the UNICODE conversion) but not cheap solution. A cheaper solution (and even faster) may be to 'pimp' your application using a Delphi skin package. Your application may look even better than the 'classic' Windows Vista/7 themes.

Delphi: Upgrade 2009 to XE?

Should I upgrade from Delphi 2009 to delphi XE?
As I don't use all the technologies, such as mobile, cloud computing, profiling, 64 bit, new database drivers, I don't need to change to the new XE?
What would change my mind?
Does the new Delphi IDE help me to write less code? Is the package management better?
Do you feel that the IDE gives more automation? And is it worth the upgrade?
I use Delphi XE all day every day, and I wouldn't use anything else.
It is the most stable version of the IDE that I have ever used. The compiler has had a huge amount of attention paid to it, and it works, and doesn't have the many internal failures, internal access violations, or other ways that compilers fall down, that every Delphi release since Delphi 2005 has. So the main feature that makes Delphi XE the best version ever is stability. It is even more stable than my old standby - Delphi 7. And delphi 7 is pretty stable, but working all day in Delphi 7, I did experience regular crashes, something that is finally a thing of the past, with Delphi XE. Okay, I've crashed XE's IDE a couple times, but it's rare.
The second reason is that it comes with great tools; A version of final builder, a version of CodeSite, and a version of AQTime are included. CodeSite was new to me with XE, but I love it, and now that I have used it I couldn't live without it. AQTime is an old friend of mine, and the version included with XE does most of the things that the full standalone AQTime will do, that I need it to do. The final builder version included, is also a huge time saver, especially if you have complex builds to do, including several Delphi application compiles, and an installer script to run, and perhaps other steps.
I like the code-formatter. I am not a big fan of Generics, but you can use them now, and they don't kill the compiler. I still prefer simple readable code, to a morass of generics, and I don't like the way that you do constraints with generics using IUnknown-style reference counted interfaces. Not nice, and not fun.
I don't use much of the database, cloud, or multi-tier application development features. I can't report on that aspect, but I do know that there's a lot more in the RAD XE product than any single developer, however intrepid, can probably even discover.
(Ethical Disclosure Footnote; I work for embarcadero. But even if I didn't, I'd still say everything above. Perhaps, I'd state it even more strongly.)
Does the new Delphi IDE help me to
write less code? Is the package
management better? Do you feel that
the IDE gives more automation?
No real changes there I think.
The area with possibly the most noticeable differences is generics. If you use generics at all then you should upgrade. The versions that followed 2009 have far fewer bugs and wrinkles in the implementation of generics.
In addition to what David said, there also is the new RTTI in Delphi XE which might make the upgrade worthwhile.
Besides the generics improvements, there are new features in the IDE. The addition of a code formatter, IDE Insight improvements to help you find things, integration of SVN, the reworking of the configuration manager, custom build tools, form designer changes, and more. There's also a bunch of new stuff in RTTI.
See this page for a list of what's new in XE, and go up a level from there to see a listing of what's changed specifically from 2009 to XE.
I think it's worth it...
Many bug fixes - they have focused alot on closing out issues. You cannot discount this...you'll never get any more fixes in your current version and the time saved by not having to work around just a single bug or two certainly pays for the upgrade cost if your time is valuable.
SVN integration is handy.
"Show In Explorer" from the project manager. (I don't know if it's just me, but I use this alot and it saves me time.)
If you like code formatters, there's a new option to format all sources in the project.
Debugger visualizers are kinda cool
Third Party Tools included: somewhat crippled, but very usable versions of: AQTime, Beyond Compare, CodeSite, IPWorks, Finalbuilder (depending on Pro/Enterprise)
Online help updated quite a bit
Can it help you write less code? Yes, as you can now rely on generics more due to many fixes from 2009, 2010 and XE. There's also some additional live templates added if that's what you are after.
What would change your mind? I'd say the bug fixes, additional Third party tools, and Online Help improvements make it a no-contest upgrade for the Pro edition. If you are going for Enterprise upgrade, and not using dbExpress, or other enterprise features, then it might be a little less convincing of an update depending on your budget.
The Help has been improved a great deal in XE - in 2010 it was a (bad) joke. 'Show in Explorer' is also great, although not enough reason to lay out that much money. Also much better support for REST, JSON etc. And XE just feels very mature and stable - I don't work for Embarcadero, but I use XE every day, as much as possible - unfortunately I am currently working on a project that uses components compiled for Delphi 5 without source code so I can't use XE for everything. There are some VS guys in my shop who think 'Delphi is Dead' and give me some grief - I am proving them wrong with XE...

Recommendations for a docking library for Delphi / C++Builder?

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:
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: I ended up buying AutomatedQA's docking library. I think it's the best. More details below in the section about it.
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.
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:
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:
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.
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 :)
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.
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:
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.
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.
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.
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.
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.
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.

Transparent checkbox with theme-support?

I'm looking for a simple, transparent checkbox component that properly supports XP/Vista/7 theming.
It should also work with Delphi 7.
I've found a component on Torry's that's not working properly, and I know that Raize components has a transparent checkbox - but I'm obviously not going to pay $300 for the entire package just to get this single component.
I've also found many other solutions, but none of them support theming.
The main problem is that TCustomCheckBox is a TWinControl descendant, and in order to implement transparency, you need to make a new TGraphic descendant control from ground up.
Any ideas?
LMD-Tools SE is free, works great on Delphi 7 and has a checkbox component that has a transparency property. I've recently used TLMDCheckbox with its transparency property enabled with Delphi 7.
http://www.lmdinnovative.com/download/index.php#LMD
Download file: setupse10d7.zip. Sorry, I can't post the whole path (url) since I don't have enough juice yet.
This should fix you up :).
ShawnH.
Raize Components is overkill for just this component, but much more capable and supports transparency in a whole load more components. Once you have it, you'll appreciate the other items greatly. I'd say it is the solution you are looking for.
If you can accept an alternative control there is JvXPCheckCtrls.pas with its TJvXPCheckbox component in the JVCL library. http://jvcl.delphi-jedi.org
I think (if I remember correct) it is transparent when themes are used.
It's quite a large package which will add to vcl with the installation of Jvcl. And it doesn't cost you a cent.
But remember, the TJvXPCheckbox component is part of their XP-controls package and you cannot simply lift out the component as a standalone. You will need the installation of Jedi and to get the core code and necessary theme handling to use it.
- Its Mozilla Public Licence ("MPL") version 1.1.
I use AlphaControls for some of my programs - all of their components are skinnable and have reasonably powerful graphics handling options. A lot of the components also have more features than their corresponding Delphi standard components - some I just use for those functions alone. There's a free Lite version available at www.alphaskins.com - it may just be what you're after. It's not Vista/7 theme-aware, mind you. We use Delphi 2010 and vista/7 theme awareness is built into the standard VCL there, although that's probably not the solution you were hoping for.
Not sure if this will help, but I ran into what I think is the same problem when working with the TMSSmooth controls: the label of a checkbox place on a form looked terrible because it was not transparent.
Their demo/example programs had nice looking checkboxes so I took a look at their sample code.
Turns out they reduced the width of the checkbox component to 13 so that only the box itself and no caption shows. Then they added a TLabel for the caption.
Seemed like a clever workaround to me.
Hope this helps.

Adding Delphi 6 third party component to Delphi 2010?

I have a few Delphi 6 third party components which I need to add to Delphi 2010 to begin my migration. Is it possible? The interface seem a lot different and I can't seem to find a way to do this?
This help...
My components: DBGridEasy, TSerial, Varian Async32.
Thanks a lot.
As has been mentioned this is not straightforward. But you do have options.
Check with Vendor and get update
if you have source you can try to update yourself.
I don't agree that it is neccesarily too complicated to upgrade. Delphi 2009 did add (finally - about a decade after it should have) very good Unicode support into the heart of delphi, but this was done down to the level of almost every built in function.
We upgraded a large (700,000 lines) project in only a couple of days. There is info on the net on what to do, there are a number of functions you need to replace if you use them (such as any funcion with Ansi in the title). Its worth a try at least.
If you dont have the source I'm afraid you have no choice but to contact the vendor, there is nothing you can do since the binary format for each Delphi version is differnt.
I don't know for sure about those particular components, but it probably won't work even if you have the source for them because there were many changes between those versions, such as the string type changing. You would be better off finding out if the vendor has updated them.
The biggest change between Delphi 6 and Delphi 2010 is the changing of the default strings to Unicode in Delphi 2009.
I highly recommend against using any pre-Delphi 2009 component with your upgrade. They will not know about Unicode and you will run into problems.
First, you should see if the new version of Delphi already has the functionality you want built in. Many things have been upgraded over the years. You may find you don't need some of your old components at all.
For the ones you still need, try to find an upgrade, or some other similar component that is ready for Delphi 2009. There are many grids around. I am not familiar with Serial or Async programs to recommend one.
This might already help you: Varian Async was acquired by TMS, the same component is now known as TMS Async32

Resources