Am 27.05.2016 um 12:43 schrieb Werner Pamler:
As noted by a user in the forum
(http://forum.lazarus.freepascal.org/index.php/topic,32754.msg211392.html#msg211392),
TsWorksheetGrid (the grid of the fpspreadsheet package) fails if used
within frames. I am aware that normally I myself take care of
fpspreadsheet, but in this case I am lost because I am not so familiar
with the TFrame architecture.
Whoever wants to look into this issue please note that the package
laz_fpspreadsheet_visual (from ccr) must be installed.
Run the attached demo to reproduce the bug.
- Click on button "ShowWorksheetGridFrame". This should open a form
with an inserted TsWorksheetGrid. Hower, there is an error message
*"Control 'WorksheetGrid_Frame ' has not parent window"*. The fact
that you can open the project at all is because I removed the form
with the TsWorksheetGrid from the project. With this form included I
crashed Lazarus.
- The bug occurs only if the WorksheetGrid is added to the form at
designtime. Open unit "main". In "BtnWorksheetGridFrameClick", comment
the line "frame := TWorksheetGrid_Frame.Create(self)" and uncomment
the line "frame := TWorksheetGrid_Frame_Runtime.Create(self)". This
activates code creating the worksheetgrid at runtime. If you run the
demo and click the button, everything is ok.
- TsWorksheetGrid inherits from TsCustomDrawGrid, just like
TsDrawGrid. Button "ShowDrawGridFrame" inserts a frame containing a
design-time-created TDrawGrid. Everything is ok.
The crash happens in "InitInheritedComponent" of classes. Is there
anything which has to be initialized in TsWorksheetGrid to pass this
test? But then, why is TDrawGrid ok which just publishes inherited
properties; all the code is in its ancestor which is shared with the
failing TsWorksheetGrid.
Any help would be appreciated.
Found it! Always the same error: Using Loaded for something which should
be done in CreateHandle... In this case, it was the grid methoded
"Setup" which requires a handle. In the grid's Loaded, however, it does
not yet have a handle because the frame into which the grid is inserted
does not yet have its own parent at this moment.
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus