P,

Given TForm1, TForm2 (TForm1 is the main form and TForm2 is NOT
automatically created) with the following code:

Instance1:

No code in form2 and the following works as expected. Form2 is shown,
closed.

procedure TForm1.Button1Click(Sender: TObject);
begin
     try
        Application.CreateForm(TForm2, Form2);
        Form2.Show;
        Sleep(2000);
        Form2.Close;
        Sleep(2000);
        //ShowMessage('Hello');
        Form2.Caption := 'I was never freed';
        Form2.Show;
     except
       on E : Exception do
          ShowMessage(E.Message);
     end;
end;

Instance2:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     Action := caFree;
end;

TForm1 code from above. Why do I not get an access violation when I attempt
to set the caption? The close event has triggered and the action should have
freed the form. Put a showmessage PRIOR to the caption being set and you get
an access violation. Can someone explain this to me?


------------------------------------------------------------------------
--Donovan
Donovan J. Edye [www.edye.wattle.id.au]
Namadgi Systems, Delphi Developer
Web: www.namsys.com.au E-Mail: [EMAIL PROTECTED]
Voice: +61 2 6285-3460 Fax: +61 2 6285-3459
TVisualBasic = Class(None);
------------------------------------------------------------------------

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz

Reply via email to