Текущий архив: 2007.08.26;
Скачать: CL | DM;
ВнизОдин пункт меню в нескольких меню. Как ? Найти похожие ветки
← →
DevilDevil © (2007-06-14 19:15) [0]История следующая.
Есть куча окон. Создаются они динамически. У каждого окна есть своё меню. В каждом меню должен быть пункт "Переместить на вкладку", в котором содержится список вкладок.
Предполагал реализовать следующим образом.
Создать один MenuItem и периодически обновлять его список подпунктов меню. А в каждое меню добавить только этот MenuItem.
Надеюсь, вы примерно понимаете, что я имею ввиду. :)
При попытке добавить имеющийся TMenuItem во 2е меню возникает Exception "Menu Inserted Twice"
Был бы очен благодарен за совет по реализции.
← →
SpellCaster (2007-06-14 20:33) [1]А если попытаться дважды использовать именно подменю? Т.е. чтобы все пункты были разными, но ссылались на один список подпунктов.
← →
b z (2007-06-14 22:29) [2]TMainMenu.Merge не подойдет?
← →
DevilDevil © (2007-06-15 13:03) [3]> SpellCaster (14.06.07 20:33) [1]
А как это можно реализовать?
Список меню хранится в пункте меню. Причём не просто ссылкой. А чтобы добавить подпункты меню надо у пункта меню вызывать Add.
> b z (14.06.07 22:29) [2]
> TMainMenu.Merge не подойдет?
:) я вот обрадовался, стал реализовывать... а это оказывается только с MainMenu, а с Popup такого нет :(
← →
{RASkov} © (2007-06-15 13:49) [4]Незнаю..... Может как вариант создать одно Действие (TAction) в его "апдэйте" анализировать Sender (это для заполнения списка) и присваивать его(действие) одноименному свойсту Action нужных пунктов меню....... просто мысль....)
← →
{RASkov} © (2007-06-15 13:51) [5]> [4] {RASkov} © (15.06.07 13:49)
Хотя это наверное сложнее будет сделать, чем, например, создать процедуру, в которую вар параметром передавать Итем менюБ для которого там строить список...
← →
DevilDevil © (2007-06-15 13:53) [6]Как то странно... посмотрел исходники, по идее если записать так:
TMainMenu(PopupMenu1).Merge(TMainMenu(PopupMenu2));
Всё должно обработаться корректно.
Однако второе меню тупо заменяет первое. Может я неправильно используюMerge
?
P.S. Вопрос открыт.
← →
Dimaxx © (2007-06-15 14:19) [7]А почему не сделать одно меню и при создании окна цеплять его к окну, а список вкладок вписывать динамически? Или сделать в каждом меню пункт "Переместить на вкладку" и при создании окна записывать в него список вкладок динамически.
← →
DevilDevil © (2007-06-15 14:44) [8]> Dimaxx © (15.06.07 14:19) [7]
У меня есть пункт меню, подпункты которого создаются и изменяются "автоматически". Вопрос в том, как прикрутить это меню или пункт меню ко всем интересующим меня меню. Причём все изменения в моём меню должны "производить" изменения в других.
Вот и вопрос, как это сделать наименее болезненно.
← →
b z (2007-06-15 15:37) [9]
> 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.
это делали?
← →
Dimaxx © (2007-06-15 17:35) [10]
> У меня есть пункт меню, подпункты которого создаются и изменяются
> "автоматически". Вопрос в том, как прикрутить это меню или
> пункт меню ко всем интересующим меня меню. Причём все изменения
> в моём меню должны "производить" изменения в других.
Так я предлагаю не сотню меню городить для каждого окна (а вдруг оно будет создано, а вдруг нет), а создать одно меню и цеплять его (после динамического заполнения) к созданному окну. А в меню определять вызвавшее окно и выполнять действия. В этом случае любые изменения пунктов меню будут отражены у всех открытых окон.
← →
SpellCaster (2007-06-15 18:08) [11]Как вариант - перекрыть OnDraw пунктов, где должно быть подменю, и в этой процедуре делать TMenuitem.Items.assign. Если и так будет ругаться на повторное использование, то придется еще удалять ссылку на это подменю из предыдущего пункта.
← →
DevilDevil © (2007-06-18 17:10) [12]пришлось перезаполнять у каждого меню по OnPopup. Жалко.
В любом случае всем спасибо!
Страницы: 1 вся ветка
Текущий архив: 2007.08.26;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.045 c