Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизКорректное уничтожение формы. Найти похожие ветки
← →
Learner © (2004-04-30 21:12) [0]У меня в проекте есть форма с кучей компонентов.
Она редко нужна, и я хочу ее создавать по вызову,
( Application.CreateForm(TForm2, Form2); )
а при закрытии – уничтожать.( Form2 ).
Подскажите, пожалуйста, как корректно это сделать ?
← →
Gero © (2004-04-30 21:17) [1]Для начала нужно убрать ее из auto-create.
Затем можно так:
with TForm2.Create(nil) do
try
ShowModal;
finally
Free;
end;
← →
Fay © (2004-04-30 21:17) [2]FreeAndNil
← →
Gero © (2004-04-30 21:18) [3]Можно и по-другому.
Application.CreateForm(TForm2, Form2);
В TForm2.OnClose:
Action := caFree;
← →
Андрей Сенченко © (2004-05-01 11:09) [4]
try
ShowModal;
А про модальный вызов ничего в вопросе не было. Облегчам себе жизнь, затрудняя ее автору вопроса ?
← →
Gero © (2004-05-01 12:02) [5]
> А про модальный вызов ничего в вопросе не было
Тогда см. [3].
← →
Anatoly Podgoretsky © (2004-05-01 12:41) [6]Более удачный модифицированный универсальный вариант выглядит так
with TForm2.Create(self) do show/showmodal
Action := caFree;
Но вариант [1] лучше для модальных форм.
← →
Learner © (2004-05-01 13:17) [7]Спасибо.
А, если таких форм несколько ?
Как бы написать что нибудь следующего типа:procedure CreateLoadMyForm(Form:TForm);
begin
with Form.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
И использовать ее для Form2, Form3, и т.д. ?
← →
Андрей Сенченко © (2004-05-01 13:23) [8]Вы абсолютно уверены, что Вас устраивает модальный вызов формы ? Вы знаете ограничения, происходящие при запуске модальной формы ?
← →
KSergey © (2004-05-01 13:26) [9]> [7] Learner © (01.05.04 13:17)
Вообще-то, как мне кажется, необходимости в такой вот фигне нет.. Потому как потом возникнет проблема "а в одной из форм надо заполнить Edit1" И начнутся хитрые If"ы... Или еще какая фигня... Тем более, что вариант Anatoly Podgoretsky © (01.05.04 12:41) весьма лаконичен в реализации.
Однако, если хотите, пожалуйста:procedure CreateLoadMyForm(AFormClass: TFormClass);
begin
with AFormClass.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
// вызов:
CreateLoadMyForm(TForm1);
Вот только пожалуйста, не забудьте убрать формы из AutoCreate!!!! И помните, что ни о каких переменных Form1, Form2 и т.д. уже речи быть не может. Можно их декларации вообще убрать, во избежании.
← →
Learner © (2004-05-01 15:14) [10]Всем большое Спасибо !
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.057 c