Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.05.2014, 19:43
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию Уничтожить динамически созданную форму

По клику на кнопке создаю новое окно (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;
не помогает
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:46.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025