Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2018-08

Scaling problem in object inspector constructor: form does not exist

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Michael Van Canneyt

Hi,

I create a RTTI property grid in the constructor of a TTabsheet descendent. At this point, the tabsheet does not yet have a parent set.

This leads to an exception because of the scaling that is attempted in the constructor of the object inspector.

You can test this in the Lazarus data desktop, by opening a data dictionary. Below a stack trace.

I think this is a bug in the LCL; in case there is no form, a default should be used instead. Or maybe the application object should be used.

Michael.

#0 fpc_raiseexception(0x7fffeef0b650, 0x0, 0x0) at ../inc/except.inc:158 #1 NEEDPARENTDESIGNCONTROL(0x7fffeef0b650) at forms.pp:2059 #2 SCALE96TOFORM(0x7fffeef0b650, 22) at include/control.inc:787 #3 REALDEFAULTITEMHEIGHT(0x7fffeef0b650) at objectinspector.pp:1464 #4 CREATE(0x7fffeec9c540, 0x1, 0x7fffeef0b650, 0x7fffeefa0180, 0x0, []) at objectinspector.pp:3715 #5 ADDPROPERTYEDITOR(0x7fffeef0b650, 0x7fffeefa0180) at objectinspector.pp:2044 #6 GETPERSISTENTPROPERTIES(0x7ffff7fe1e40, [TKINTEGER..TKPOINTER], 0x7fffeec8c040, {Proc = {procedure (POINTER, TPROPERTYEDITOR)} 0x7fffffffcc88, Self = 0x7fffeef0b650}, {Proc = {function (POINTER, PPROPINFO) : BOOLEAN} 0x7fffffffccc0, Self = 0x0}, {Proc = {function (POINTER, TPROPERTYEDITOR) : BOOLEAN} 0x7fffffffccd0, Self = 0x7fffeef0b650}) at propedits.pp:2464 #7 GETPERSISTENTPROPERTIES(0x7ffff7fe1e40, [TKINTEGER..TKPOINTER], 0x7fffeec8c040, {Proc = {procedure (POINTER, TPROPERTYEDITOR)} 0x7fffffffcce8, Self = 0x7fffeef0b650}, {Proc = {function (POINTER, TPROPERTYEDITOR) : BOOLEAN} 0x7fffffffcd40, Self = 0x7fffeef0b650}) at propedits.pp:2481 #8 BUILDPROPERTYLIST(0x7fffeef0b650, false, true) at objectinspector.pp:1979 #9 SETSELECTION(0x7fffeef0b650, 0x7ffff7fe2040) at objectinspector.pp:1392 #10 SETTIOBJECT(0x7fffeef0b650, 0x7ffff7f54e40) at objectinspector.pp:6080 #11 CREATEPROPERTYGRID(0x7fffeef09610, 0x7ffff7f54e40) at dicteditor.pp:775 #12 SELECTSINGLEOBJECT(0x7fffeef09610, 0x7ffff7f54e40) at dicteditor.pp:764 #13 DOSELECTNODE(0x7fffeef09610, 0x7ffff7f77c30) at dicteditor.pp:589 #14 DOSELECTIONCHANGED(0x7ffff7f77c30) at include/treeview.inc:4652 #15 INTERNALSELECTIONCHANGED(0x7ffff7f77c30) at include/treeview.inc:6044 #16 SETSELECTION(0x7ffff7f77c30, 0x7fffeeed6c60) at include/treeview.inc:4472 #17 SHOWDICTIONARY(0x7fffeef09610) at dicteditor.pp:448 #18 CREATEGUI(0x7fffeef09610) at dicteditor.pp:415 #19 CREATE(0x7fffeef09610, 0x1, 0x7fffeef651f0) at dicteditor.pp:354 #20 NEWDATAEDITOR(0x7fffeef651f0) at frmmain.pp:1437 #21 OPENFILE(0x7fffeef651f0, 0x7fffeef29918 '/home/michael/dinac/sql/d'...) at frmmain.pp:1285 #22 OPENDATADICT(0x7fffeef651f0, 0x7fffeef29480) at frmmain.pp:1274 #23 TVALLDBLCLICK(0x7fffeef651f0, 0x7fffeef71530) at frmmain.pp:1257 #24 DBLCLICK(0x7fffeef71530) at include/control.inc:1668 #25 WMLBUTTONDBLCLK(0x7fffeef71530, {MSG = 515, KEYS = 129, XPOS = 80, YPOS = 497, POS = {X = 80, Y = 497}, DUMMY = 32571472, RESULT = 0}) at include/control.inc:2543 #26 DISPATCH(0x7fffeef71530, 0) at ../inc/objpas.inc:684 #27 WNDPROC(0x7fffeef71530, {MSG = 515, UNUSEDMSG = 0, WPARAM = 129, LPARAM = 32571472, RESULT = 0}) at include/control.inc:2243 #28 WNDPROC(0x7fffeef71530, {MSG = 515, UNUSEDMSG = 0, WPARAM = 129, LPARAM = 32571472, RESULT = 0}) at include/wincontrol.inc:5425 #29 DELIVERMESSAGE(0x7fffeef71530, 0) at lclmessageglue.pas:112 #30 DELIVERMESSAGE(0x7fffeef71530, 0) at gtk2/gtk2proc.inc:3780 #31 DELIVERMOUSEDOWNMESSAGE(0x15ac6d0, 0x1665590, 0x7fffeef71530) at gtk2/gtk2callback.inc:2066 #32 GTKMOUSEBTNPRESS(0x1508ae0, 0x1665590, 0x7fffeef71530) at gtk2/gtk2callback.inc:1793 #33 ?? at :0
#34 g_closure_invoke at :0
#35 ?? at :0
#36 g_signal_emit_valist at :0
#37 g_signal_emit at :0
#38 ?? at :0
#39 gtk_propagate_event at :0
#40 gtk_main_do_event at :0
#41 ?? at :0
#42 g_main_context_dispatch at :0
#43 ?? at :0
#44 g_main_context_iteration at :0
#45 APPWAITMESSAGE(0x7ffff7f76230) at gtk2/gtk2widgetset.inc:2431 #46 IDLE(0x7ffff7f75bf0, true) at include/application.inc:414 #47 HANDLEMESSAGE(0x7ffff7f75bf0) at include/application.inc:1283 #48 RUNLOOP(0x7ffff7f75bf0) at include/application.inc:1419 #49 APPRUN(0x7ffff7f76230, {Proc = {procedure (POINTER)} 0x7fffffffe1a0, Self = 0x7ffff7f75bf0}) at include/interfacebase.inc:54 #50 RUN(0x7ffff7f75bf0) at include/application.inc:1407 #51 :21

Reply by email