Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

закрытие MDI Форм   Найти похожие ветки 

 
_dimka ©   (2005-11-25 12:32) [0]

есть mdi приложение, нужно сделать вот что:
нажимаю на кнопку на форме1(mdichild) появляеться форма2(mdichild), соответственноь таких форм может быть много, но как сделать так что-бы при закрытии формы1 закрывались формы2 которые я вызвал с этой формы?
в голову пришло 2 варианта:
1) использовать свойство Tag, при создании формы1 устанавливать уникальное значение в Tag при создании формы2 присваиваем ей свойству Tag такое же значение
2) создавать форму2 так TForm3.Create(Form1.ActiveMDIChild);

как лучше поступить?
заранее спасибо


 
msguns ©   (2005-11-25 12:45) [1]

Какое-то непонятное у тебя MDI ;)
По идее "папа" у всех "дочек" должен быть один (MDIForm) и "дочки" равноправны между собою (MDIChild). Вызов очередной "дочки" должен выполняться "папой", а не другой "дочкой". Если же функционал требует создавать новую "дочь" из уже существующей, то существующая должна обратиться к "папе" с "просьбой сделать это "за нее".
Формы же, вызываемые непосредственно из "дочек", должны быть не MDI и обычно вызываются  модально.


 
_dimka ©   (2005-11-25 13:05) [2]


> Формы же, вызываемые непосредственно из "дочек", должны
> быть не MDI и обычно вызываются  модально.

ну почему же?


 
Суслик ©   (2005-11-25 13:08) [3]

допустим форма А создает формЫ Б.
1. В классе Б в обработчике OnClose пишешь Action := caFree;
2. При создании формы Б из формы А вызываешь у нее FreeNotification передавая ей self (т.е. форму А)
3. В форме А запоминаешь все созданные формы Б (например в TLIst)
4. В форме А переопределяешь Notification
5. Если форма Б закрывается то vcl известит A, о том, что форма Б закрывается (удаляется).
6. В А.Notification удаляешь из TList (см. п 3) закрытую пользователем форму.
7. При закрытии формы А пробегаешь по списку форм и вызываешь у них Close.

Все.


 
msguns ©   (2005-11-25 13:52) [4]

>_dimka ©   (25.11.05 13:05) [2]
>ну почему же?

Потому что иначе будет как в "Собачьем сердце":
"Простите, я не понял, кто на ком стоял ?"


 
_dimka ©   (2005-11-25 13:54) [5]


> Потому что иначе будет как в "Собачьем сердце":
> "Простите, я не понял, кто на ком стоял ?"

Да нет :), нужно иммено MDI....


 
msguns ©   (2005-11-25 14:02) [6]

>_dimka ©   (25.11.05 13:54) [5]
>Да нет :), нужно иммено MDI....

Тогда объясни, ЧТО ИМЕННО ты понимаешь под МДИ.
Когда формы создаются "этажерочным" способом и при этом все доступны, то это и есть "кто на ком стоял ?". По крайней мере именно такое чувство возникнет у пользователя, когда он откроет штук 5-6 форм.



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
14-1132723017
Джо
2005-11-23 08:16
2005.12.18
Google Base


2-1133180810
PeaK
2005-11-28 15:26
2005.12.18
Какая компонента подходит для ввода Unicode-текста с клавиатуры?


9-1121435436
gosha117
2005-07-15 17:50
2005.12.18
С чего начать делать AI?


4-1129888703
ZZZ
2005-10-21 13:58
2005.12.18
Программное изменение раскладки клавиатуры.


3-1131003784
gusev
2005-11-03 10:43
2005.12.18
Ошибка в запросе по дате и времени