Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 440

/ вопрос открыт /

В программе использую много MDI-форм внешне схожих, поэтому наследую их от одной формы. При закрытии в родителе ставлю
Action := caFree;
Но мне нужно также на переменную-указатель "имя формы" при закрытии ставить nil. Сейчас я это делаю в наследниках при закрытии (одно и то же практически при разных именах форм). Как это можно делать в родительской форме? Self := nil не проходит.

Knjazev Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.03 сек.