Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Один пункт меню в нескольких меню. Как ?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
2-1185522909
Ekate
2007-07-27 11:55
2007.08.26
потоки


2-1185629522
Johnnnn
2007-07-28 17:32
2007.08.26
WM_LBUTTONUP Как записать координаты нажатия


2-1186045260
_Tehnik_
2007-08-02 13:01
2007.08.26
Приложение на переднем плане и исчо кое что постаршнее


2-1186405542
tytus
2007-08-06 17:05
2007.08.26
Как заставить работать TileWindows?


15-1185382185
ProgRAMmer Dimonych
2007-07-25 20:49
2007.08.26
Гугл только у меня не открывается?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский