![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Один пункт меню в нескольких меню. Как ?
DevilDevil © (2007-06-14 19:15:00)История следующая.
Есть куча окон. Создаются они динамически. У каждого окна есть своё меню. В каждом меню должен быть пункт "Переместить на вкладку", в котором содержится список вкладок.
Предполагал реализовать следующим образом.
Создать один MenuItem и периодически обновлять его список подпунктов меню. А в каждое меню добавить только этот MenuItem.
Надеюсь, вы примерно понимаете, что я имею ввиду. :)
При попытке добавить имеющийся TMenuItem во 2е меню возникает Exception " Menu Inserted Twice"
Был бы очен благодарен за совет по реализции.
DevilDevil (2007-06-18 17:10:00) [1]пришлось перезаполнять у каждого меню по OnPopup. Жалко.
В любом случае всем спасибо!
SpellCaster (2007-06-15 18:08:00) [2]Как вариант - перекрыть OnDraw пунктов, где должно быть подменю, и в этой процедуре делать TMenuitem.Items.assign. Если и так будет ругаться на повторное использование, то придется еще удалять ссылку на это подменю из предыдущего пункта.
Dimaxx (2007-06-15 17:35:00) [3]
> У меня есть пункт меню, подпункты которого создаются и изменяются
> "автоматически". Вопрос в том, как прикрутить это меню или
> пункт меню ко всем интересующим меня меню. Причём все изменения
> в моём меню должны "производить" изменения в других.
Так я предлагаю не сотню меню городить для каждого окна (а вдруг оно будет создано, а вдруг нет), а создать одно меню и цеплять его (после динамического заполнения) к созданному окну. А в меню определять вызвавшее окно и выполнять действия. В этом случае любые изменения пунктов меню будут отражены у всех открытых окон.
b z (2007-06-15 15:37:00) [4]
> DevilDevil © (15.06.07 13:53) [6]
так не пробовал, но а
Depending on the value of the GroupIndex property of menu items on the main menu, the merged menu items can replace menu items on the menu bar, or insert menu items into the menu bar. See GroupIndex for information on how to do these things.
это делали?
DevilDevil (2007-06-15 14:44:00) [5]> Dimaxx © (15.06.07 14:19) [7]
У меня есть пункт меню, подпункты которого создаются и изменяются "автоматически". Вопрос в том, как прикрутить это меню или пункт меню ко всем интересующим меня меню. Причём все изменения в моём меню должны "производить" изменения в других.
Вот и вопрос, как это сделать наименее болезненно.
Dimaxx (2007-06-15 14:19:00) [6]А почему не сделать одно меню и при создании окна цеплять его к окну, а список вкладок вписывать динамически? Или сделать в каждом меню пункт "Переместить на вкладку" и при создании окна записывать в него список вкладок динамически.
DevilDevil (2007-06-15 13:53:00) [7]Как то странно... посмотрел исходники, по идее если записать так:
TMainMenu(PopupMenu1).Merge(TMainMenu(PopupMenu2));
Всё должно обработаться корректно.
Однако второе меню тупо заменяет первое. Может я неправильно используюMerge?
P.S. Вопрос открыт.
{RASkov} (2007-06-15 13:51:00) [8]> [4] {RASkov} © (15.06.07 13:49)
Хотя это наверное сложнее будет сделать, чем, например, создать процедуру, в которую вар параметром передавать Итем менюБ для которого там строить список...
{RASkov} (2007-06-15 13:49:00) [9]Незнаю..... Может как вариант создать одно Действие (TAction) в его "апдэйте" анализировать Sender (это для заполнения списка) и присваивать его(действие) одноименному свойсту Action нужных пунктов меню....... просто мысль....)
DevilDevil (2007-06-15 13:03:00) [10]> SpellCaster (14.06.07 20:33) [1]
А как это можно реализовать?
Список меню хранится в пункте меню. Причём не просто ссылкой. А чтобы добавить подпункты меню надо у пункта меню вызывать Add.
> b z (14.06.07 22:29) [2]
> TMainMenu.Merge не подойдет?
:) я вот обрадовался, стал реализовывать... а это оказывается только с MainMenu, а с Popup такого нет :(
b z (2007-06-14 22:29:00) [11]TMainMenu.Merge не подойдет?
SpellCaster (2007-06-14 20:33:00) [12]А если попытаться дважды использовать именно подменю? Т.е. чтобы все пункты были разными, но ссылались на один список подпунктов.