[Lazarus] Manually creating a form

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


On Friday 29 of June 2012 11:20:35 zeljko wrote:
> 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.

Or better to avoid casting, use Self like Antonio mentioned.

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


More information about the Lazarus mailing list