Советы по Delphi

         

Освобождение формы


Когда форма невидима, ее освобождение приводит к освобождению ресурсов. Это нужно делать, если форма динамически создается во время выполнения приложения. Пользуйтесь методом Release, не Free.

Попробуйте следующий код:

    unit Unit1;

interface

uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type


TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public Form2: TForm; { Public declarations } end;
var
Form1: TForm1;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if
Form2 <> nil then begin Form2.Release; Form2:= nil; end; end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if
Form2 = nil then begin Form2 := TForm.Create(Application); Form2.Show; end; end;

end.

[Francisco Torres, ftorres@cenpes.petrobras.gov.br]

В вашей ситуации вы должны отказаться от такого кода:

    begin
Application.Create(myForm);
Application.Run;
end.

И воспользоваться следующим:

    begin myForm := TmyForm.Create(Application);
{ вставьте сюда нужный вам код } myForm.Show; { ... или myForm.ShowModal }
{ вставьте сюда нужный вам код } myForm.Hide; { ... если вы хотите скрыть ее } { вставьте сюда нужный вам код } myForm.Free;
end.

Вы можете использовать методы формы "Create" и "Free" когда угодно и сколько угодно раз.

Не забывайте освобождать все формы перед завершением вашего приложения! [001756]



Содержание раздела