[Lazarus] Accessing components in FormCreate event

Lars noreply at z505.com
Thu Sep 22 08:31:29 CEST 2016


> No, formcreate is the correct event to set up new components.
> OnShow may be called multiple times in the lifetime of a form.
>
> Michael.

In OnShow I use a counter to only do the change on the first show. I've
even made a FirstShow event years ago.

I trust what you say since you are very experienced in Delphi and Lazarus,
however I could swear that I have been bitten by a bug before where not
all the components on the form are necessarily initialized in FormCreate.
i.e. I could swear that some components, aren't guaranteed to be fully
ready, just because a form is created....  Does the form create guarantee
the componenents are all ready for modification and initialized, because I
could absolutely swear that this has haunted me before where the form
itself is ready and created, but that didn't guarantee the children of the
form were all ready...

So a solution, was to put a counter in FormShow (local const var or
whatever you call those strange things that persist like a global, but are
still local) and access the components on the first show only.

If I could just find one other person that has been haunted by accessing
components in formcreate, then I'd confirm I am not imagining things and
my memory is solid. However, you've been programming far longer so... I am
wanting to trust what you say!


More information about the Lazarus mailing list