[Lazarus] constructor Create How is it work?
Hans-Peter Diettrich
DrDiettrich1 at aol.com
Wed Mar 5 07:29:21 CET 2014
FreeMan schrieb:
> ExLookUp1:=TExLookUp.Create(Form1); This is for manual creating, I'm
> talk about, I'm designing in IDE, 1-2 TExLookUp on form, and run my
> application, TExLookUp is class(TCustomEditButton) so Edit and button is
> shown on where I put on form, in designtime IDE.
>
> constructor TExLookUp.Create(AOwner: TComponent);
> begin inherited Create(AOwner);
> Self.OnChange := @EditChange;
set more Self properties here!
> FGrid := TRxDBGrid.Create(Self);
> FGrid.Parent := Self.Parent;
> FGrid.Left := Self.Left;
> FGrid.Top := Self.Heigh + 10;
> FGrid.Width := 150;
> FGrid.visible := False;
> ...
Please remember that you are in the TExLooUp constructor. Finish
initialization of this component, before assigning Self.whatever to the
FGrid.
When the TExtLookUp is initialized from the form resource, you have to
wait until this has been done. In this case I'd move the FGrid related
part into the TExLookUp.OnCreate handler, which AFAIK is called *after*
the TExtLookUp has been created and fully initialized.
Or put the code into ExtLookUp.SetParent, as Mattias suggests. But this
solution depends on the order, how the TExtLookUp properties are
initialized from the form resource. When Parent is set before Left,
Height etc., this solution doesn't work either.
DoDi
More information about the Lazarus
mailing list