At 08:48 10/11/99 +1100, you wrote:
>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;

FormClose doesn't free Form, FormDestroy does.
But FormDestroy of Form2 won't be called before you set Form2.caption
unless Application.Processmessage has been called.  'ShowMessage' calls
Application.ProcessMessages, so it'll raise access violation.


--------------------------------------------------------------
Edward Tianjun Huang                    Today Software Limited
                                        97 Great South Road
Email: [EMAIL PROTECTED] (Company)     Remuera
       [EMAIL PROTECTED] (Private)    Auckland
--------------------------------------------------------------


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

Reply via email to