[Lazarus] Manually creating a form

zeljko zeljko at holobit.net
Fri Jun 29 11:20:35 CEST 2012


On Friday 29 of June 2012 11:16:06 Koenraad Lelong wrote:
> Hi,
> 
> I'm trying to manually create a form and in it's OnCreate event populate
> it with controls. But I'm doing somehing wrong.
> This is my creating sequence :
> 
>   form2:=Tform2.Create(nil);
>   form2.ShowModal;
>   Form2.Destroy;
> 
> Nothing special I think.
> 
> This is a sample of the create-code :
> 
> procedure TForm2.FormCreate(Sender: TObject);
> 
> var
>    i : integer;
>    upper : integer;
> 
> begin
> 
> upper:=10;
> for i:=0 to 4 do
>   begin
>     form2.Height:=form2.height+25;
>     edits[i]:=Tedit.Create(self);
>     edits[i].Parent:=form2;
>     edits[i].Top:=upper;
>     edits[i].Left:=10;
>     upper:=upper+25;
>   end;
> end;
> 
> But when I run the code, I get a segfault at the location where I modify
> the form's height. If I remove that, I get the form but the edits do not
> show.
> 
> When I modify the code to automatically create the form this works. So
> I'm clearly missing something.
> 
> Any tips, links to documentation ?

Do not use variable in OnCreate(). Sender parameter is your form.
So instead of using Form2.Height := , use TCustomForm(Sender).Height or 
whatever. That should work.

zeljko

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120629/170f95e8/attachment-0003.html>


More information about the Lazarus mailing list