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

Когда форма невидима, ее освобождение приводит к освобождению ресурсов. Это нужно делать, если форма динамически создается во время выполнения приложения. Пользуйтесь методом 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, Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ]

 

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

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

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

face="Courier New" size="2"> begin myForm := TmyForm.Create(Application);

{ вставьте сюда нужный вам код }
myForm.Show; { ... или myForm.ShowModal }
{ вставьте сюда нужный вам код }
myForm.Hide; { ... если вы хотите скрыть ее }
{ вставьте сюда нужный вам код }
myForm.Free;
end.

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

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

 
« Предыдущая статья   Следующая статья »