[lazarus] Progress

Samuel Liddicott sam at campbellsci.co.uk
Wed Sep 1 04:40:52 EDT 1999

> -----Original Message-----
> From: Michael A. Hess [mailto:mhess at harding.miraclec.com]
> Sent: Tuesday, August 31, 1999 04:14 PM
> To: lazarus at miraclec.com
> Subject: RE: [lazarus] Progress
> On Tue, 31 Aug 1999, Samuel Liddicott wrote:
> > Form designer waits on more complete (internally) VCL
> implementation which I
> > am also working on.
> > More complete VCL internals await knowledge of more GTK
> primitive operations
> > which I am studying.
> I am concerned over this statement. Exactly what GTK primitives are you
> talking about? You should not be dealing with GTK primitives at all. The
> whole idea of the LCL and Lazarus is to remove the requirement of using
> the primitives. This is something that is handled in and by the widget set
> library.

I know, but the LCL is not complete.  Before I can use it for the form
designer we need to implement more of the "hidden" functionality of the VCL
and this depends on GTK primitives.  I've been through all this, at covers
createwnd, recreatewnd, wndproc etc.

> I was on vacation for 2 weeks and having read over the archive I get the
> feeling that there is an impression that Lazarus and the LCL will be able
> to use ALL of the wonderful tools in places like Delphi Super Page. Well
> it will not.

Cob.  It will run most of them with little change.

> Most of these tools rely on the ability to inherit from an
> existing class say TButton for example. Then they override the Draw method
> to create a new button which maintains all of the original button features
> such as events.

No, very few override TButton, very few override the standard windows
controls.  BTW TButton is one of the least flexible of native windows

> This will not work with Lazarus. The reason is due to the
> fact that ALL and I mean ALL of the generation of the Button, how it
> looks, how it is drawn, how it reacts to events is found in and controled
> by the GTK library. If you want to create a new component like that you
> need to modify the GTK library. You can't do it from within Lazarus or the
> LCL.

Will the way in which we are going to handle paints, and owner draw is in
discussion at the moment.  Someone is finding out how to have a GTKCanvas
that paints to screen.

> We have to keep this separation so that we can support alternate API
> libraries. The minute you add that feature to GTK and us it in your
> program you remove the possibility of using other API's if they do not
> also have that same component.

Listen, if GTK doesn't allow setting and reading of the widget Z-order then
its pretty kack anyway.  That, and how .visible works are actually the only
two points are am searching for at the moment.

> So with that respect the core part of
> Lazarus and the LCL should never support more than the standard widgets
> found in all API's.

Which are so far unconsidered except win32 and GTK, but I am sure GTK allows
setting the Z order, I need to work out how.  No I'm not going to use it
directly I was just going to implement it in TWinControl, as it wasn't the
last time I looked.

> That is the only way that the LCL can maintain cross
> platform and cross API ability.

If you want to make the LCL compatable with the so far unconsidered other
API's we had better implement the hole LCL ourselves and only use the bitmap
blitting of those API's, its the only way we can
a) inplement the VCL
b) to work on any API

> Free Pascal, the FCL, Lazarus, and the LCL will be able to be used like
> Delphi and be able to port components that are non-visible but it will
> most likely NEVER be able to port a large portion of visible Delphi
> components unless they are also found in other widget sets like GTK and
> Qt.

Whatever; I disagree but there we go.

> Is this concept clear to everyone???


I hear what you say but it doesn't seem relevant.

**** I don't plan on introducing dependancy on GTK I plan on overcoming with
GTK with dependancy we have on windows.

Delphi can set component z order, GTK can hopefully do it directly; if not I
can implement it indirectly.
I need it.

It doesn't make sense that we are not going to implement half the delphi
functionality in order not to be dependant on GTK.


More information about the Lazarus mailing list