| 
| 
 | Вопрос # 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 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |