Lazarus

Programming => LCL => Topic started by: incendio on January 29, 2020, 04:24:51 am

Title: [SOLVED]How to manually create, display and delete form
Post by: incendio on January 29, 2020, 04:24:51 am
Hi guys,

I came from C++ Builder.

On C++ Builder, I use these codes to manually create a form and display it on Modal Type then after finished doing some actions on that form, manually destroy it.
Code: Pascal  [Select][+][-]
  1. MyFrm = new TMyFrm(Application);
  2. MyFrm->ShowModal();
  3. MyFrm->Update();
  4. delete MyFrm;

What are the equivalent codes on Lazarus?

Thanks in advance.
Title: Re: How to manually create, display and delete form
Post by: egsuh on January 29, 2020, 05:15:22 am

Code: Pascal  [Select][+][-]
  1. MyFrm := TMyFrm.Create;
  2. MyFrm.ShowModal;
  3. MyFrm.Update;
  4. MyFrm.Free;
Title: Re: How to manually create, display and delete form
Post by: incendio on January 29, 2020, 05:28:54 am
I changed first code to
Code: Pascal  [Select][+][-]
  1. MyFrm := TMyFrm.Create(Application)

It worked OK. Thanks a lot.
Title: Re: [SOLVED]How to manually create, display and delete form
Post by: egsuh on January 29, 2020, 05:38:07 am
Oh yes. TForm.Create needs owner. Sorry, I didn't check it.
I think once you assign owner, you don't have to FREE it explicitly...  Please confirm anybody. 
Title: Re: [SOLVED]How to manually create, display and delete form
Post by: lucamar on January 29, 2020, 02:42:15 pm
I think once you assign owner, you don't have to FREE it explicitly...  Please confirm anybody.

As with any other control: if you assign a proper owner, that owner will free it when it's itself freed. For cases like this, though, it's better to assign no owner, so the code should be somethng like:

Code: Pascal  [Select][+][-]
  1. MyFrm := TMyFrm.Create(Nil);
  2. try
  3.   MyFrm.ShowModal;
  4.   //MyFrm.Update; {This is not needed, is it? since it's inmediately freed?}
  5. finally
  6.   MyFrm.Free;
  7. end;
TinyPortal © 2005-2018