![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Вопрос вот в чем. Нужно придумать универсальный механизм.
Есть главная форма. FormStyle - fsMDIForm. Есть дочернии формы. Как организовать такой универсальный алгоритм, чтобы при открытии дочерних форм добавлялся новый пункт, в меню "Окна" (Name итемса - nmWindow), а при закрытии этот пункт удалялся. Причем,не должно быть перекрестных ссылок между главной и дочерними формами. Иначе говоря, дочерие окна не должны ссылаться на главную. Но можно использовать модуль данных (TDataModule) на который ссылается как главное окно, так и дочернии. Для открытия дочерних форм, я использю TAction (в обработчике которого уже предусмотрено, что если дочерняя форма открыта, то она выходит на передний план, а не открывается новый экземпляр этой формы. Но это так, для информации) Данный механизм я реализовал, но через жопу. Хотелось бы увидеть вашу реализацию этой проблемы. Заранее благодарен! P.S. Под словом "универсальный" я понимаю то, чтобы не привязываться к конкретным названиям TAction и TMenuItem. Иначе говоря, я должен вставить данный код в любое (подобное) приложение, и он должен работать без внесения каких-либо изменений. -------------------- |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
А пункт должен добавляться в главную форму или во все дочерние?
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Если в главной форме, то я бы сделал так:
1) В отдельном юните создал бы класс для добавления удаления итемов из указаного TMenuItem. 2) Определил бы в том юните глобальную переменную созданного класса. 3) В главной форме создал его экземпляр и поместил бы указатель на него в эту переменную. 4) Для дочерних форм сделал бы наследников от TForm и переписал бы там конструктор и деструктор с использованием этой глобальной переменной. Ну это только теория))) Нужно проверять. -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
народ, вы свои таблетки принимали с утра? 8)
может, я чего круто не догнал?? -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |