I must say it aloud: LAZARUS IDE IS GREAT.In a few days (I started on december 23, and didn't work too much, because of family parties dinners, lunches etc.) it made me possible to smoothly support Borland CLX Component Library, and to revive the dead Kylix. It appears that having been resurrected Lazarus has learned how to resurrect others! :-)
In the first attached screenshots you can see a form created with Lazarus IDE, and in the second the Kylix application running, which uses the Borland clx component library, developed, compiled and debugged with Lazarus IDE. The Qt style is Platinum, and color is clLime, just to make it visibly different from the gtk counterpart. In the platform I've been using for test (Fedora 5), Kylix IDE won't even start.
This is at a very early stage, but the ease with which I have attained the first results proves that it should be possible to salvage Kylix applications with a minimal fraction of the work required for porting from CLX to LCL.
For those interested, I will add some details. Why:In view of a much more ambitious project that I'll share with other Lazarus users if it turns out to be feasible and reasonable, I wanted to experiment how difficult is to use Lazarus IDE with an alternative "compatible" component library. CLX is ready made and decently LCL compatible, so it could be used almost without writing code, and if it worked it could provide, as a side benefit, a way to salvage the dozens of Kylix apps my company is forced to support for a long time to come (they go into industrial machines, which cost a fortune, and therefore must be maintained at least for 10 years!)
How:I've converted Borland CLX units to Lazarus units with the IDE function Convert Delphi Unit to Lazarus Unit. Then I've created a package, called clx, with all those units. CLX is intended to interface with Borland RTL, which is somehow different from FCL, so, where appropriate, I've minimally edited the clx units, and for the rest added a DelphiRTL unit, to collect a small number of required interface functions. Using Lazarus resources requires the LResources unit, and a few sibling units. As Lresources resides in the LCL, I've lifted LResources unit and its siblings from LCL, renamed it to QLResources (to avoid name clashing) and created a second package named lres, with the required units. That's almost all. An application which declare to require clx instead of LCL (this requires a minimal twigging with projects .lpr and project inspector to put things right), will use the clx library, Borland libborqt.so, and generate a Kilyx application which looks and behaves like the original.
What's missing:Image resource files (i.e. stock button icons and a few more icons) have not yet been converted to Lazarus resources. Delphi style localization is not supported (I don't use it, it required some extra work so I left it aside). Delphi style HelpSysytem neither (same reason). There's still some debug, mostly because Delphi widestrings support routines are not one-to-one with the FPC counterparts, and run-time errors pop up whenever an incompatibility is encountered.
What next. Beside debugging everything properly, there are two things I'd like to test.One of them is to compile the Lazarus IDE using CLX in place of LCL. This would make life much easier, because currently one can access with the object inspector only to the subset of properties which are common to LCL and CLX. The other is to use the CLX3 Library, which uses a standard Qt3, instead of the Borland patched Qt2 of CLX. But in both cases I'm unsure if it's worth while. After all my interest is to lengthen the life span of existing programs, not to develop new ones.
If someone else has similar needs, I'm ready to share what I've done. Only I'm unsure of licensing problems. I believe to be entitled to do what's possible to maintain the software we've developed with tools which were paid several thousands of good dollars for each license, and which were dropped, leaving users with bare hands, but I don't know what I can make publicly available. So, unless someone with sound legal knowledge can give assurances, I will just share those information privately.
Giuliano
<<inline: LazIde.png>>
<<inline: KylixApp.png>>
