Recent

Author Topic: [SOLVED]How to manually create, display and delete form  (Read 1325 times)

incendio

  • Sr. Member
  • ****
  • Posts: 269
[SOLVED]How to manually create, display and delete form
« 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.
« Last Edit: January 29, 2020, 05:29:23 am by incendio »

egsuh

  • Hero Member
  • *****
  • Posts: 1273
Re: How to manually create, display and delete form
« Reply #1 on: January 29, 2020, 05:15:22 am »

Code: Pascal  [Select][+][-]
  1. MyFrm := TMyFrm.Create;
  2. MyFrm.ShowModal;
  3. MyFrm.Update;
  4. MyFrm.Free;

incendio

  • Sr. Member
  • ****
  • Posts: 269
Re: How to manually create, display and delete form
« Reply #2 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.

egsuh

  • Hero Member
  • *****
  • Posts: 1273
Re: [SOLVED]How to manually create, display and delete form
« Reply #3 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. 

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: [SOLVED]How to manually create, display and delete form
« Reply #4 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;
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

 

TinyPortal © 2005-2018