Monday, March 17, 2008

Looking for a VCL Wizard component

First, there is a sort of discussion going on about deleting items from a list. Should you do that traversing forward or backwards to a list? Point to http://17slon.com/blogs/gabr/2008/03/on-bad-examples-and-smelly-code.html to read on.

Back to wizards. Until now I have used JvWizard (from the JVCL components) as my component of choice for implementing wizards. It's a great component, but there are a couple of reasons why I want to abandon that.

First of all: I have a bad smell (...) about using open source code in my commercial software. Although there are professional programmers working on libraries like JCL, I simply want a phone number or e-mail address I can turn to in case of trouble. I don't want to be dependent on the good will of some programmer. I want to pay for my software and (hence) get some rights to support on it. It's a matter of principle.

Second: I want the controls to comply to my user interface. In this case, I want the controls to use DevExpress components. I saw some switches and stuff to turn DevExpress support on in the JVCL library, but the library is simply too complex and large to dig into and find out what's happening where. And, I want to be sure that if DevExpress upgrades its library (which becomes less frequent unfortunately), the wizard components upgrades too.

So, what to do? DevExpress doesn't deliver a wizard component. I can't find another commercial one. So, I'd better create one myself. Maybe there is some commercial value to that in the end too.

I'll keep you posted.

Bye,
Bart

5 comments:

TDelphiHobbyist said...

Bart,

You could start with Balmsoft Wizard which can be found on sourceforge [under a LGPL license] if you're looking for inspiration or just something for yourself. It needs updating if you're using an IDE greater than D7.

Bart Roozendaal said...

The main reason I'm looking around for an alternative to JvWizard is that I want support if I need it. Balmsoft seems to be gone :-| so that's no good I'm afraid. THanks for the tip though.

TDelphiHobbyist said...

Sorry, I was going with the "So, I'd better create one myself." remark in the original post. With the one you've found in the JVCL very tightly bound to the JCL/JVCL [I'm guessing - most of their stuff is] I figured something stand alone would be your best bet and finding a copy of the original KWizard files would be quite a hunt - I used to have a copy.
GL

Bart Roozendaal said...

That's right, I'm still planning to create one. The JvWizard was added to that library later, so isn't as tight to the jv(c)l as you'd imagine (apart from the odd control). It was pretty easy to use that one. But I still favor a commercial one, so any tips are welcome.

Lars Fosdal said...

I wrote a lightweight extendable wizard system a couple of years back. It was wrap and delegate oriented instead of purely inheritance oriented.

It had instancing of the subframes on first use, and the frames were stupid - with all the biz logic gathered in a non-visual proxy class hierarchy which had knowledge about the frames, allowing the frames to be loosely coupled and reusable in multiple wizards.

The proxy and the controller / container were flexible with regards to validate before continue, allow go back, skip to specific frame, keeping track of step x of y, titles, button captions, etc.

f.x. a file open or file save frame was set up by the proxy instead of "hardcoding" the names, types, and locations in the frame itself.

Since that, I have been thinking about doing a remake and simplifying some of the unpolished bits, but I never quite seem to find the time to do it. I really should do it.