Showing posts with label Lazarus. Show all posts
Showing posts with label Lazarus. Show all posts

30 January 2014

Install Indy components into Lazarus

To have internet or server time in your application, you must install Indy components.
For a lot of users, I'm sure that the information given above won't work, or will be somewhat confusing given the differences between versions and inconsistent explanations.

The website points you to download the latest version from the snapshots page.
This wiki tells you to copy a lot of files over into directories.For me, neither worked, and ended up making a mess of my Lazarus installations.
  • Firstly, the page I would retrieve this from is here. Other sites I tried had problems with some files inside the archive.
  • When you open up the archive above, you will see there are folders: "fpc" and "lazarus".
  • You can copy the contents of "fpc" into: LAZARUS_DIR\fpc\2.6.0\source\packages\indylaz if you want to have things neat and tidy.
  • The "lazarus" folder, you copy into LAZARUS_DIR\components\indylaz
  • With both of these, make sure that there isn't a sub-directory inside the folders given. i.e. LAZARUS_DIR\components\indylaz\lazarus\
  • Go into Lazarus and go to "Package" -> "Open package file" and point it to the "indylaz.lpk" inside the LAZARUS_DIR\components\indylaz directory.
  • Once the package loads inside your project, click on the "options" button, which resembles an image of a parcel with a cog next to it.
  • Click the "Compiler Options" on the left-hand side and Click on the ".." button next to "Other unit files (-Fu) (delimiter is semicolon)". Select the "fpc" folder you created above and click OK. Lazarus will sort out the relative path for you. Don't change it.
  • Click OK and compile and then direct angry bile towards the individual who has steered you wrong with the previous, unhelpful, instructions.
  • Compile then install (will rebuild Lazarus). 
  • Currently, due to a know bug in FPC, you must compile the Indy package TWICE before installing it.

03 February 2013

How to setup CodeTyphon - for Cross compiling FPC and Lazarus - AIO

This is install procedure in Ubuntu 12.10 64bit environment :

1. Install last CodeTyphon zip packet from


2. Extract archive in folder , for example :

  • /home/ct 

3. Enter that folder from Terminal with root privileges and start

  • ./install.sh

4. Only for the first time of CodeTyphon installation in your Computer, select option

  • (3) "Install System Libraries" (about 10 min.)
    • for Ubuntu 12.10, you will need to manually add these packages
      • sudo apt-get install binutils-dev devel-essential

5. After System Libraries Installation, run again "Install.sh" and select option

  •  (0) "Install CodeTyphon Studio"

6. After copy operation, select option
  •  (8) "Remove and Build All" (about 15 min.)

6. After that, you have CodeTyphon Studio installed in your dash, start it and select :

  • menu Cross-Build and choose desired platform

7. Than you should start Lazarus and choose related fpc, for example :

  • /usr/lib/codetyphon/fpc/bin/x86_64-linux/ppcx64 (for Linux64)
  • /usr/lib/codetyphon/fpc/bin/x86_64-linux/ppcross386 (for Win32)
  • /usr/lib/codetyphon/fpc/bin/x86_64-linux/ppcrossx64 (for Win64)

8. Finally, don't forget to choose menu Project/Project Options/Code Generation/Target OS :

  • Linux
  • Win32
  • Win64

Write Once, Compile Anywhere

How to build FPC and Lazarus from SVN for cross-compiling

This procedure is implemented in Ubuntu 12.10 64bit.

1. You need to install subversion via apt-get in Terminal window :

  • sudo apt-get install subversion

2. Than you can download your first trunk of fpc and lazarus :

  • cd /home/svn
  • cd fpc
  • svn checkout http://svn.freepascal.org/svn/fpc/trunk
  • cd lazarus
  • svn checkout http://svn.freepascal.org/svn/lazarus/trunk

3. For later update from svn sources :

  • cd /home/svn
  • svn update fpc 
  • svn update lazarus

4. To build fpc and lazarus

  • make clean all


11 September 2012

How to install Lazarus in OpenSuse 12.2


To install fresh packages from Lazarus Daily Snapshots (http://freepascal.dfmk.hu/test/lazarus/)
type in Terminal (Super User mode):

rpm -Uvh fpc-2.6.0-0.laz.i686.rpm
rpm -Uvh fpc-src-2.6.0-0.laz.i686.rpm

zypper in lazarus-1.1.38611-20120911.laz.i686.rpm
(instead of rpm -Uvh lazarus-1.1.38611-20120911.laz.i686.rpm)

30 August 2012

Lazarus 1.0 release available for download

The Lazarus team is glad to announce the release of:

Lazarus 1.0

At this important stage the current team would like to thank all the past and current people who were involved in getting us here.

* Thanks also go to the FPC team for providing the compiler that makes it all possible.

* Special thanks go to the founders of the project who started Lazarus more than a decade ago in 1999: Cliff Baeseman, Shane Miller and Michael A. Hess.

* A history of developers involved can be found at http://wiki.lazarus.freepascal.org/History. And a list of the many contributors comes with the distribution.

The release is available for download at the SourceForge download page:

http://sourceforge.net/projects/lazarus/files/

Choose your CPU, OS, distro and then the "Lazarus 1.0" directory.

Minimum requirements:

Windows: 98, 2k, XP, Vista, 7, 32 or 64bit

FreeBSD/Linux: gtk 2.8 or qt4.5, 32 or 64bit

Mac OS X: 10.4, LCL only 32bit, non LCL apps can be 64bit

This release has been built with fpc 2.6.0 (the former release 0.9.30.4 was built with that too).

The svn tag is

http://svn.freepascal.org/svn/lazarus/tags/lazarus_1_0

The list of changes:

http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes

For people who are blocked by SF, the Lazarus releases from sourceforge are mirrored at:

ftp://freepascal.dfmk.hu/pub/lazarus/releases/

and later at (after some time for synchronization)

http://michael-ep3.physik.uni-halle.de/Lazarus/releases/

and

http://mirrors.iwi.me/lazarus/

22 August 2012

Lazarus : idemake.cfg is missing

If you try to rebuild lazarus and get compiler message for not finding file idemake.cfg, you should find it on "C:\User\AppData\Local\Lazarus\idemake.cfg" and copy to lazarus installation folder...

11 June 2012

Post-install procedure in Lazarus


This is post-install procedure for fresh lazarus build :

1. Install Fortes report package
    from http://fortes4lazarus.svn.sourceforge.net/viewvc/fortes4lazarus/?view=tar
    and copy file rlreportshared.dll to c:\lazarus folder
2. Install ZeosDBO database package
    from http://sourceforge.net/projects/zeoslib/files/Zeos%20Database%20Objects/
3. Install ZVDateTimeControls package
    from http://sourceforge.net/projects/lazarus-ccr/files/Time%20and%20Date/ZVDateTimeControls%20Pack/
4. Install zeddbtreeview package
    from http://code.google.com/p/zeddbtreeview/
5. Install uniqueinstance package
    from http://code.google.com/p/luipack/downloads/detail?name=uniqueinstance-1.0.zip
6. Install Lazarus Data Dictionary package
    from c:\lazarus\components\datadict\lazdatadict.lpk
7. Install PowerPDF package
    from http://sourceforge.net/projects/lazarus-ccr/files/PowerPDF
8. Install UNIDAC packages, in this order:
    C:\lazarus\components\UniDAC\Source\Lazarus1\dclunidac10.lpk
    C:\lazarus\components\UniDAC\Source\Lazarus1\accessprovider10.lpk
    C:\lazarus\components\UniDAC\Source\Lazarus1\msprovider10.lpk
    C:\lazarus\components\UniDAC\Source\Lazarus1\myprovider10.lpk
    C:\lazarus\components\UniDAC\Source\Lazarus1\pgprovider10.lpk

 

9. Build the project Lazarus Data Desktop
    from c:\lazarus\tools\lazdatadesktop\lazdatadesktop.lpr

10. Activate sqlite3laz package throw menu Package option Install/Uninstall
    (if you are in Linux, add packages : sqlite3, sqlite3devel, before,
     or on Windows download dll from https://sqlite.org/download.html and
     put in lazarus folder)
11. Activate lazreport package throw menu Package option Install/Uninstall
12. Activate lazreportpdfexport package throw menu Package option Install/Uninstall

13. Copy sqliteadmin folder to c:\lazarus\tools\
      from http://sqliteadmin.orbmu2k.de/
      and register it in Tools/Configure External Tools menu item

14. Install Help in Lazarus IDE :
    * Install CHM Help package
       from c:\lazarus\components\chmhelp\packages\idehelp\chmhelppkg.lpk
    * Build the project lazarus/components/chmhelp/lhelp/lhelp.lpi
    * Download the latest stable Lazarus CHM help files
       from http://sourceforge.net/projects/lazarus/files/Lazarus%20Documentation/
       and copy all CHM files to c:\lazarus\docs\chm
    * Go to the Environment Options, tab "Help Options' and select the "CHM Help Viewer".
       "HelpExe" should be the lhelp you just built - lhelp.exe.
       "HelpFilesPath" should be, where you put the CHM files - c:\lazarus\docs\chm
     Now context sensitive help using F1 should work.

31 August 2011

Close all MDI children forms

procedure T_c_form_desktop.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i : Word;
begin
  inherited;
  if MDIChildCount > 0 then
     for i := 0 to MDIChildCount - 1 do MDIChildren[i].Close;
end;

25 July 2011

Future of Lazarus / FreePascal

(This post was taken from excellent subject in Lazarus Forum)

... But thats because everybody wants web bases applications and no more locally installed applications so most of the industry is working on that, abandoning desktop applications.

"Everybody wants":THAT'S SIMPLY NOT TRUE!

I face 1 customer every 1000 who prefer a web app instead of a desktop one.

If we are talking of fashion ok... I'm italian... but the truth is that only some (AND FEW ONES ) scenarios can benefit from web based applications.

Simply ask to the extreme: what do you prefer, developing on your computer or using an online IDE? Do you prefere Aptana or Titanium? What you prefer a desktop chat client to put on the systray panel or a google chat in the browser?

Obviously if a global shared task manager is needed, surely web app is better.

But the main reason the industry/developers TRY to make everything web based, is for a WRONG paradigm: web app are OS independent and everywhere (or nowhere ). Yes, right, but are isolated from browsers, components (hundreds that born and die every year), servers, protocols, glue that interconnect a component/framework together, etc.?

Even entering the domain of what is "best" (at least more than system tools ) suited for web application, that is, business, financial and accounting management software, there are many caveats and problems, not only technical problems, but also legal and from from user point of view.

Some examples:

1) Usual user sentence when he try demo web apps: "It is too slow!!!". ALWAYS! Even using a Cray-X server! That's due to a more complicated verbose protocol. Even in the best case where java is used in the client side instead of JS, the overall software is perceived SLOW compared with a native/dedicated client.

Real case

Do you know Zurich Insurance? They had a DOS based software till last year, on novell LAN, called OASI. They have only recently changed to a web based equivalent software.

RESULT:EVERY USER feel this new application a down grade! Everyone feel it bad because of the low responsiveness compared to the previous super quick software. Obviuosly it's not a matter of money because Zurich... you know..., nor config: dedicated lines, backup lines, etc. The problem is that there is nothing to do for phisics reasons. As the best truck of the world can't compete with a Ferrari or a Lamborghini Gallardo so a web app cant compete with a desktop one.

Responsiveness and other features are the reasons you can find desktop clients even for twitter, facebook, and other web app etc.

What developers have to understand is that end users are not developers. They don't rejoice only because we have an easy life making "write once execute everywhere" web app. When a user see a click response after 1s he think: "WHAT A SLUGGISHNESS!!!! What's wrong? (click click click click click click)".

End users are not like us. If a user wants a car and you give him a truck, is not more happy reasoning that it is tecnologically better, can carry more stuff, has more value in the industry, and so is OK that is slower.

2)

I both develop RIA and Desktop applications. Small/medium companies that call us to buy a software, after 2 seconds ask: "Isn't a web software, right?" (That means: if it is a web app I'm not interested at all).

Why? Simple:

a) They want data on their LAN, not in fantasiland or distributed all over the clouds of the world even if we are proud to hilight "cloud server" or GlassFish in the brochure!

b) They want to work even when DSL is down, and are not interested if the app is slow because of the line.

They also want to work if notebook don't have a line (for many could seem strange but in many nations trains, bus and ferry boats are places that rarely or often NEVER have a hot spot).

c) They would like to work from a pen drive if needed.

d) They know that online software (at least in Italy) is subject to the Guardia di Finanza (italian police whose specific task is to enforce tax evasion laws etc) WITHOUT ANY ASK OR ADVICE.

3) Initially I was willing to simplify my work making web app for everything. I thought I could gather every user under the same web app simply changing the location of the server:

- installing the app/server on the customer LAN (VMware/VBox) to cope with the clients mandatory will to have a desktop app

- installing on the web for those who need global access and no installation, working even from a pub client.

... but today I ask myself: what is the real benefit againsts a real dedicated client? It's only because I can't give them pub client access?

So after some years I have the evidence that only some web solutions are really well accepted from the users:

1) Software intended for occasional use, touch and go

2) Software for the big mass (es. communication like facebook, twitter, gmail)... by the way... about google.... try asking people to use Google Apps instead of m$ Word . Have you ever tried a serious documents? Try the speed/responsiveness.

3) Software for huge companies where slowness is less important that everywhere + no maintainance (no manteinance... only idealistic idea! Let's say: Today is: I have all of the problems distributed on the cloud )

and I'm now oriented to:

1) Hybrid apps (web app only for some functions)

2) Portable app (real native executable), that are also useable the way java web start do.

This can cope with almost every need the best way we can (in the user view point).

Developer view

Despite I have no problem developing RIA applications (I have also developed a framework), to me, there is nothing more satisfying than working with native applications, for plenty of reasons. Beyond a certain line, it's even easier because RIA apps is not that panacea. The worst thing for a desktop app is OS changes.... but now browsers war, technologies that appear and disappear, frameworks, GUI components (YUI, etc), servers, etc, brings more changes and need of mainteinance than a desktop applications using something like lazarus, all in one.

Just an example: In a small web app, i'm using jQuery and some jQ visual components, plus TinyMce + AjaxFileManager. Some days ago I update jQuery: problems!

So there is no better relief developing web apps. Don't counting problems such as resize images client side before uploading, dialogue with a cash register and other devices, changing the printer if the software has to print an invoce, using another printer if it has to print a chart, or using a Zebra card printer if it has to print a new fidelity card. Let's do it with a web app! How easy is it?

Web apps are limited to some targets: out of that targets the only benefit are... problems!

Quote

Not sure if you are thinking that Swing itself is dead, but from what I have read, this is referring to an enhancement that was planned for Java 7 to build a framework around Swing to make it easier for developers to build Swing apps.

That's referring to what it says: Netbeans Platform.

About the Swing framework (the best way Netbeans had to compete with VB/Delphi/Lazarus/RealBasic/code:blocks/and the rest of the desktop world), what you see when you choose New Project->Desktop application, IS DEAD!.

Swing probably will last for a long time, but the web is full of question like: "Is Swing dead?" Probably there is a real reason!

Whatever the case, I don't trust Oracle! Sun was another matter. Oracle is very similar to m$: you can aspect everything, even they shut down Java tomorrow (exaggeration but... not too much ).

About Netbeans Platform: is something like developing.... how can I say.... just imagine developing under Open Office or Microsoft Access. The developer get tied to Netbeans more than Java. With the previous way, you could choose to migrate the app to Eclipse. With NetBeans Platform is not possibile anymore.

Even though I was not very attracted from Pascal (reason why times ago I used C++ Builder instead of Delphi), Lazarus is so interesting that I changed my mind and I'm seriously studying it (I exhumed from my shelf a tome of Marco Cantu` on Delphi 6 ).

So thanks to every developer and your great work with this product!

Blame the inexperienced developer, don't blame the tool.

From Lazarus forum

06 May 2011

Lazarus > PostgreSQL > Post data

To post data in PostgreSQL database, even after active session, using standard Lazarus IDE TPQConnection control, create event :

procedure T_c_data._sql_tableAfterPost(DataSet: TDataSet);
begin
  _sql_table.ApplyUpdates;
  _db_transaction.Commit/Retaining;
end;

25 December 2010

Lazarus, PostgreSQL, Fortes report - Bytea String BLOB fields

To save some image into dbimage control on a form :

procedure T_form._dbimageDblClick(Sender: TObject);
begin
if _opendialog.Execute then
begin
_db_grid.DataSource.DataSet.Edit;
_dbimage.Picture.LoadFromFile(_opendialog.FileName) ;
end;
end;

To print those fields in Fortes report, use dbimage >

procedure T_report._rlimageBeforePrint(Sender: TObject; var PrintIt: boolean);
var
st : Tstream;
s : string;
gc : TGraphicClass;
AGraphic : TGraphic;

begin
gc := nil;
AGraphic := nil;

st := _datamodule._table.CreateBlobStream(_datamodule._table_image_field,bmRead);
s := st.ReadAnsiString;

try
gc := GetGraphicClassForFileExtension(s);
if assigned(gc) then // gc is never assigned
begin
AGraphic := gc.Create; // never executed
AGraphic.LoadFromStream(st); // never executed
_rlimage.Picture.Assign(AGraphic); // never executed
end;
finally
if assigned(AGraphic) then
AGraphic.Free;
st.Free;
end
end;

I spend whole day just to develop those code ...

31 October 2010

Dynamic libraries can be found: libpq.so.4, libpq.so

I'm investigating the use of lazarus/postgresql for a linux desktop application.

Fresh Linux installation produce this error, when starting application

Sender=Exception
Exception=None of the dynamic libraries can be found: libpq.so.4, libpq.so

Fix is

ln -s /usr/lib/libpq.so.5 /usr/lib/libpq.so

18 October 2010

Lazarus Report Preview

This is a main logic of sample code to produce Preview of LazReport :

procedure T_f_main._ButtonClick(Sender: TObject);
begin
_frReport.LoadFromFile('_izvestaj.lrf');
_frReport.ShowReport;
end;

Lazarus ZeosDBO Stored Procedure Call for PostgreSQL functions

This is main logic in some Lazarus database form, powered by ZeosDBO, to call stored procedure (postgresql function), who is placed in ZSQLReadOnly SQL property, like

SELECT * FROM Name_Of_Function()

Then In ZTable BeforePost event, you reopen that ZSQL to retrieve default value of primary key, like this code :

procedure T_f_main._ZTableBeforePost(DataSet: TDataSet);
begin
if _DataSource.State in [dsInsert] then
with _ZSQL_readonly_procedure do
begin
Open ;
_ZTableID.Value := Fields[0].asInteger;
Close ;
end;
end;

14 October 2010

Is Lazarus ready for writing commercial applications ?


(this is one software developer experience from Blaise Pascal Newsletter , that proves that Delphi multiplatform magic is possible, but in Open Source world through Lazarus project, so I simply must share it on my blog...)

"This article illustrates the enormous progress Lazarus has made because of the dedicated work of the core developer team: it shows Nowadays Lazarus is in many ways on a par with Delphi. In several key areas it is way ahead of Delphi (64 bit compiled executables, multi-platform and multi-OS, allows development on mobile and embedded systems).

Of course it is not the same as Delphi, but very cheap - see the price of the Lazarus USB stick in the Advertisement. So affordable for anyone and you get started immediately with no installation required. You can create any application you ever wanted and the number of components available is grows steadily. So the answer is YES. Perfect for commercial applications!

I started my job in 2001 at a Croatian company called Holobit...

At that time Holobit was a pretty small company with a few dozen customers. My primary task was to make the company's current C++ business applications run on Linux and Windows by using Delphi and Kylix and Borland's CLX technology. After years of C/C++ coding on linux OOP looked very simple and well organized. Two months later I concluded that Borland had great products, and the coding time is much shorter than it was with C/C++ (gtk+,qt) using vi editor. Anyway, within 3 months our business applications were converted to CLX and the company started selling for Linux & Win32. All was done with Kylix 2 and Delphi 6 (later upgraded to K3 & D7).

Creating native Linux apps was a good decision, so the number of customers started growing rapidly. Our customers were happy with the ability to choose between Linux and Windows client apps for dekstop PC’s, because it saves some money and creates a better and more secure environment. The second conversion issue that looked rather complicated - at that time - were databases. When I started to convert our applications, all of them used Foxpro, and I was very disapointed with it, because I already used Postgresql on Linux. So your guess that we moved all of our applications to Postgresql is quite correct.

At that time I didn't know third party components like Zeos etc..., so I wrote my own Postgresql driver and used it for several years. Later when I found Zeos - a nice surprise – I immediately started to use that. So it went on until 2004, there were rumors that Kylix was Exit, no news from Borland – just silence ... Yes it was Exited: shame on you Borland, not because you put Kylix into grave, but because you cheated your customers. For years, then, we were fighting with Borland products. (In the meantime Kylix could not run on any distributions based on Glibc higher than 2.4.X) then, until I saw someone had started a qt-widgetset in a Lazarus project, and that guy was Felipe, and thanks to Den Jean for Qt C bindings, because without C bindings we could not have a Qtwidgetset inside Lazarus.

I had looked into Lazarus just a few times before, but I was not attracted previously, because it supported only the Gtk1 widgetset which looked awful compared to the Qt2 used by Kylix, so now I got motivated to download the lazarus trunk and find out to see the way how it worked with Qt. (I already tried Gtk before). Well, as IG mentioned already, work on the Qt widgetset having only just started, the result needed a lot of improvements, so it does not work.

After a quick scan of Lazarus principles, the Lazarus component library (LCL) and widgetset connections to the LCL I began to contribute to the Lazarus project with a primary goal to get Qt widgetset up and running. My first patches then were sent to Felipe. He argued about my coding standards (hey, hey), but I fixed that and changed my coding standards to the Lazarus coding standard. Anyway, after a year or so the Qt widgetset became useable - in the meantime Lazarus developers granted me svn write access - so no more need to wait for Felipe and others to commit my patches. At the same time – business problems arose with Kylix & Delphi programming and the company management considered moving our thought about to move the complete codebase to Java or .Net . When the management decided this change must be made quickly I objected.

I was not very happy with that. Not because of the applications, but because of all the third party components used in our applications (ZeosLib, FastReports, TMS grids, VirtualTrees etc). I said that we would need a lot of time and resources to move our code to Java or .Net and the result of that operation was not reassuring. I was disturbed by these business decisions (and already had in mind to change the job), so at one day I asked the chief if they could agree to let me spend some time developing code using Lazarus, and in the next few months I showed some of our apps running on Qt4.

I had started a race against time, I had to fix the Qt-LCL and convert one of our applications to LCL (only a small one). That wasn't an easy task since qt-lcl is still not finished and lot of things were not working. Zeos for Lazarus already existed, but for this simple applications I had to have FastReports and TMS grids. So I had three months to make Qt under Lazarus useable, convert FastReports and TMS grids (both CLX licensed)...

After hundreds of hours of coding, the day of reckoning came. I had to show my work at the end of February 2008. I made a presentation on Linux, 32 bit Windows and on Mac OSX and the company management was pleased and satisfied with it. Of course there were still bugs and features not yet implemented, but they appreciated my main argument. If we moved to Lazarus we would be able to work on other (even more) supported platforms, and also because Lazarus is an open source project, we would not be at the mercy of decisions made by other companies (such as Borland) that had harmed us in the past. That became the happiest day in the last few years of my working life. I was given the budget and time required to move our applications to Lazarus. Now I had a reasonable time (15 months) to improve Lazarus and re-write our applications for Lazarus (and deal with other everyday tasks). During 2008/2009 I converted all the third party components and all of our applications to FPC/Lazarus, and therefore also contributed a lot of patches to the Lazarus project. The Goal is reached – Lazarus is better now than Kylix 3 and we started to deploy Lcl LCL applications over more than 3,500 at customers’ sites.

User impressions were positive since our apps looks native on all platforms. A few dozen of Mac OSX users were also happy since we give them native apps for the first time (they used Parallels + linux VM). WOW, what a glorious day. We just did not need the Borland products anymore.

Now our complete range of software is developed using FPC/Lazarus and uses PostgreSQL RDBMS:
1. HoloERP – ERP system with > 400 modules (forms)
2. Cafeman – Caffe bars & restaurants backoffice and POS system
3. TSuS – small shops backoffice & POS system
4. Cinema – software for cinemas (reservations, tickets etc)
5. ArhStudio – architects documentation database.

All of those these applications use the following 3rd party components:
· ZeosLib
· FastReports (ported CLX)
· TMS Grids (ported CLX, but also we licensed the newest VCL
and ported it also)
· TMS Planner (ported CLX, later VCL)
· FlexCell (licensed LCL , yes there's LCL version)
· Our custom components

Conclusion:
Why?
Lazarus is ready for commercial usage especially for people with legacy Kylix3 / Delphi7 codebases.
My personal opinion is that Lazarus Qt is much better than K3/D7 at this time (0.9.29 trunk), and developers will be happy with it's new 0.9.30 version.
· The only OOP RAD which supports so many platforms.
· Constantly developed by volunteers, it does not depend on commercial decisions so you can avoid bankrupcy etc.
· Costs almost nothing except energy and time.
· If it doesn't fit your needs, you can change it and contribute.
· If there's a bug - you can fix it and contribute it, but at least you can open an issue at lazarus mantis issue tracker."

Author of this blog text is Lazarus forum member Zeljan and software case is from http://www.holobit.net