![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
закрытие MDI Форм [D6]
_dimka © (2005-11-25 12:32:00)есть mdi приложение, нужно сделать вот что:
нажимаю на кнопку на форме1(mdichild) появляеться форма2(mdichild), соответственноь таких форм может быть много, но как сделать так что-бы при закрытии формы1 закрывались формы2 которые я вызвал с этой формы?
в голову пришло 2 варианта:
1) использовать свойство Tag, при создании формы1 устанавливать уникальное значение в Tag при создании формы2 присваиваем ей свойству Tag такое же значение
2) создавать форму2 так TForm3.Create(Form1.ActiveMDIChild);
как лучше поступить?
заранее спасибо
msguns (2005-11-25 14:02:00) [1]>_dimka © (25.11.05 13:54) [5]
>Да нет :), нужно иммено MDI....
Тогда объясни, ЧТО ИМЕННО ты понимаешь под МДИ.
Когда формы создаются "этажерочным" способом и при этом все доступны, то это и есть "кто на ком стоял ?". По крайней мере именно такое чувство возникнет у пользователя, когда он откроет штук 5-6 форм.
_dimka (2005-11-25 13:54:00) [2]
> Потому что иначе будет как в "Собачьем сердце":
> "Простите, я не понял, кто на ком стоял ?"
Да нет :), нужно иммено MDI....
msguns (2005-11-25 13:52:00) [3]>_dimka © (25.11.05 13:05) [2]
>ну почему же?
Потому что иначе будет как в "Собачьем сердце":
"Простите, я не понял, кто на ком стоял ?"
Суслик (2005-11-25 13:08:00) [4]допустим форма А создает формЫ Б.
1. В классе Б в обработчике OnClose пишешь Action := caFree;
2. При создании формы Б из формы А вызываешь у нее FreeNotification передавая ей self (т.е. форму А)
3. В форме А запоминаешь все созданные формы Б (например в TLIst)
4. В форме А переопределяешь Notification
5. Если форма Б закрывается то vcl известит A, о том, что форма Б закрывается (удаляется).
6. В А.Notification удаляешь из TList (см. п 3) закрытую пользователем форму.
7. При закрытии формы А пробегаешь по списку форм и вызываешь у них Close.
Все.
_dimka (2005-11-25 13:05:00) [5]
> Формы же, вызываемые непосредственно из "дочек", должны
> быть не MDI и обычно вызываются модально.
ну почему же?
msguns (2005-11-25 12:45:00) [6]Какое-то непонятное у тебя MDI ;)
По идее "папа" у всех "дочек" должен быть один (MDIForm) и "дочки" равноправны между собою (MDIChild). Вызов очередной "дочки" должен выполняться "папой", а не другой "дочкой". Если же функционал требует создавать новую "дочь" из уже существующей, то существующая должна обратиться к "папе" с "просьбой сделать это "за нее".
Формы же, вызываемые непосредственно из "дочек", должны быть не MDI и обычно вызываются модально.