[Lazarus] LCL + GTK2 + CustomControl : Help needed

dev.dliw at gmail.com dev.dliw at gmail.com
Tue May 14 22:32:44 CEST 2013

sorry to be so insistent, but I can't imagine noone has an idea :(
No LCLGTK2 maintainer on this list?

To put it in a nutshell:
I need to get / create a handle via LCL or GTK2 directly, which is a 
gtkcontainer, with no bin.child attached...
or - seeing that LCL creates a bigger hierarchy for one control - the handle, 
to which children can be attached
Just like a button can be attached to a form / panel / groupbox...

The result of GetFixedWidget with the Handle created by default 
TWinControl.CreateWnd seems to be ok, but anything added with gtk_pack
(which is the way the library attaches itself AFAIK)
simply isn't displayed...
Maybe *the* one call to inform LCL about the new child is missing...

Any ideas?
Would it help, if I uploaded everything I have so far to e.g. github?
[ I plan to publish one of these components anyway...]

Somehow I have the feeling, I don't see any trees being in a forest... :D

=== Additional info ===

I spend a couple more hours with trial and error - leading nowhere...

I found
1. FinishCreateHandle, which seems to take a gtkwidget and add lcl specific 
info to it
2. GetFixedWidget and FixedPutControl
Unfortunately there's no documentation - and little to no comments in the 

(2) seemed to work (no errors on startup and destroy), but nothing was visible

I already found out, how LCL internally uses GTKbin to save additonal infos 
for LCL (with gtk_object_get_data, which is marked depreciated btw.) and how 
things roughly work - but still no idea where to start...

Two more possible hints:
1. A groupbox's handle worked fine, after setting its bin.child to nil. This 
broke LCL when cleaning up things, but apart from that everything worked as 
expected: resize / update / no flicker etc. 
2. I found out that TForm has a vbox by default for the menu (according to the 
comments in the source). Passing its handle to the library things worked, too 
- but of course it was in the wrong place...


More information about the Lazarus mailing list