По клику на кнопке создаю новое окно (TFrmProfile = class(TForm), класс описан в другом юните)
Код:
unit Unit1;
//------bla-bla-bla------
var
Form1: TForm1;
FormNo: Byte;
implementation
//------bla-bla-bla------
procedure TForm1.Button1Click(Sender: TObject);
var F: TFrmProfile;
begin
//------bla-bla-bla------
F:= TFrmProfile.CreateWithType(Application, MT);
FormNo:= FormNo+1;
F.Name:= 'Forma'+IntToStr(FormNo);
ComboBox1.Items.Append(F.Name);
//------bla-bla-bla------
F.Show;
Label1.Caption:= IntToStr(Application.ComponentCount);
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var i: Byte;
begin
for i:= 0 to Application.ComponentCount-1 do
begin
if Application.Components[i].Name = ComboBox1.Text then
(Application.Components[i] as TFrmProfile).Show;
end;
end;
Label1.Caption показывает, что при закрытии динамически созданной формы, она не уничтожается, а просто скрывается (Hide)
Код:
(Application.Components[i] as TFrmProfile).Show;
делает ранее закрытую форму видимой.
Собственно задача изничтожить форму при закрытии.
Цитата:
Обработчик OnClose имеет параметр Action со следующими четырьмя возможными значениями: caNone - Форме не разрешено закрыться. caHide - Вместо закрытия, форма будет скрыта. caFree - Форма будет закрыта, и занятые ей ресурсы будут освобождены. caMinimize - Вместо закрытия, форма будет минимизирована.
|
отсюда логично проистекает:
Код:
unit MineForms;
//------bla-bla-bla------
TFrmProfile = class(TForm)
//------bla-bla-bla------
public
constructor CreateWithType(AOwner: TComponent;
AMetterType: TMetterType=mtPrutok; Dummy: Integer=0);
procedure Close(Sender: TObject; var Action: TCloseAction);
end;
implementation
//------bla-bla-bla------
procedure TFrmProfile.Close(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
не помогает