Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое добвление и удаление пунктов меню, универсальный механизм 
:(
    Опции темы
Medved
Дата 27.1.2004, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Вопрос вот в чем. Нужно придумать универсальный механизм.

Есть главная форма. FormStyle - fsMDIForm.
Есть дочернии формы.

Как организовать такой универсальный алгоритм, чтобы при открытии дочерних форм добавлялся новый пункт, в меню "Окна" (Name итемса - nmWindow), а при закрытии этот пункт удалялся. Причем,не должно быть перекрестных ссылок между главной и дочерними формами. Иначе говоря, дочерие окна не должны ссылаться на главную. Но можно использовать модуль данных (TDataModule) на который ссылается как главное окно, так и дочернии.
Для открытия дочерних форм, я использю TAction (в обработчике которого уже предусмотрено, что если дочерняя форма открыта, то она выходит на передний план, а не открывается новый экземпляр этой формы. Но это так, для информации)

Данный механизм я реализовал, но через жопу. Хотелось бы увидеть вашу реализацию этой проблемы.

Заранее благодарен!

P.S. Под словом "универсальный" я понимаю то, чтобы не привязываться к конкретным названиям TAction и TMenuItem. Иначе говоря, я должен вставить данный код в любое (подобное) приложение, и он должен работать без внесения каких-либо изменений.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
<Spawn>
Дата 27.1.2004, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



А пункт должен добавляться в главную форму или во все дочерние?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
<Spawn>
Дата 27.1.2004, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Если в главной форме, то я бы сделал так:
1) В отдельном юните создал бы класс для добавления удаления итемов из указаного TMenuItem.
2) Определил бы в том юните глобальную переменную созданного класса.
3) В главной форме создал его экземпляр и поместил бы указатель на него в эту переменную.
4) Для дочерних форм сделал бы наследников от TForm и переписал бы там конструктор и деструктор с использованием этой глобальной переменной.

Ну это только теория))) Нужно проверять.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
x77
Дата 27.1.2004, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



народ, вы свои таблетки принимали с утра? 8)

Цитата
Specifies the Window menu for an MDI parent form.

property WindowMenu: TMenuItem;

Description

Use WindowMenu to get or set the Window menu for an MDI parent form. The Window menu is a standard menu in MDI applications. It contains commands that let the user manage the windows in the application. Menu items usually include Cascade, Arrange Icons, Tile, and so on.

The Window menu also lists (at the bottom) the child windows that are currently open in the application. When the user selects one of these windows from the menu, the window becomes the active window in the application.

Although this menu is commonly called the Window menu, it can have any name that corresponds to an existing menu item on the menu bar. The names of open child forms are merged onto the menu automatically at run-time.


WindowMenu is meaningful only if the form is an MDI parent (that is, if the form’s FormStyle property is set to fsMDIForm).


может, я чего круто не догнал??


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.