|
Вопрос # 440/ вопрос открыт / |
|
В программе использую много MDI-форм внешне схожих, поэтому наследую их от одной формы. При закрытии в родителе ставлю
Action := caFree;
Но мне нужно также на переменную-указатель "имя формы" при закрытии ставить nil. Сейчас я это делаю в наследниках при закрытии (одно и то же практически при разных именах форм). Как это можно делать в родительской форме? Self := nil не проходит.
 |
Вопрос задал: Knjazev (статус: 3-ий класс)
Вопрос отправлен: 27 марта 2007, 19:40
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Задача осложняется тем, что на одну форму может быть не одна переменная-указатель. Что и есть в вашем случае. Self и FormXXX. И форма не сможет обнулить их всех. это даже в теории сложно звучит.
Что делать. Есть два варианта. Один, в формкрейте передавать ссылку на переменную, которую нужно обнулить по выходу. Второе решение заключается в том, (я его часто применяю) что когда форма пропадает, то она пропадает с глобального маасива Screen.Forms. Тоесть, когда создаёте новую форму, вам нужно проверить, а нет ли её ещё. И с помощю банального цикла
for i:=0 to Screen.FormCount-1 do
if TForm(Screen.Forms).XXXXX = XXXXX
then {наша форма найдена!}
мы по какомуто критерию ищем нашу форму. Нашли - указатель на неё валиден. нет - звиняйте. Можно обнулять и создавать новую форму.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 28 марта 2007, 11:31
Оценка за ответ: 5
Комментарий к оценке: Это идея, и можно вообще отказаться от nil
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|