Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Необходимо в Runtime показать SubMenu у PopupMenu [D5, D6]


Semion ©   (2002-11-25 14:18:00) 

Проблема такая: нужно на Action повесить показ SubMenu в PopupMenu. При этом само PopupMenu можно и не показывать (в принципе пофиг). Чего-тоо все перепробовал и все бус толку.


Игорь Шевченко   (2002-11-26 12:52:00) [1]

Лучше капитулировать. Хотя бы потому, что разбираться в исходном коде программы будет потом проще...Или, например, сделать в ActionList категории для меню и строит меню динамически, тогда изменения в одном ActionList"е (вдруг новые типы объектов для добавления появятся) сами отразятся в меню, без дополнительных исправлений кода.


Semion   (2002-11-26 11:09:00) [2]

Владислав, спасибо, что рассказли мне, когда именно обычно появляется Popup Menu :) В моей ситуации пользователь при работе с гридом должен иметь возможность добавить в него элемент. Однако элементы грида разнотипны (пожалуйста, не говорите, что это нехорошо - так надо :) )Если он нажмет правую кнопку мыши на этом гриде, то появляется PopUp Menu, в котором у него есть выбор - "удалить", "добавить". Добавить - открывает подменю с типами объектов, которые он может добавить в данный момент. Однако пользователь может нажать Ctrl+Del чтобы удалить элемент и Ctrl+Ins чтобы добавить. Я хочу сделать так, чтобы пользователю было удобно добавлять - нажав Ctrl+Ins он должен увидеть уже знакомое ему меню выбора типа объекта, а не какое-то левое диалоговое окно с той же самой функциональностью, что и у меню.
Action"ы я естественно использую.
Вариант создания в DesignTime второго меню, состоящего из элементов подменю "Добавить" рассматривается как капитуляция :)


Владислав   (2002-11-25 19:21:00) [3]

Чего-то я не понимаю в этой жизни :(
Popup menu раскрывается, если пользователь щелкает правой кнопкой мыши по какому-то объекту. Именно такой реакции программы пользователь и будет ожидать. Существует единственная клавиша на клавиатуре, от которой юзер может ожидать всплывающее меню. На кой придумывать такой изврат?! Если уж и надо что-то отобразить на нажатие Ctrl+Ins, то лучше отобразить диалоговое окно. А чтобы не дублировать код, можно использовать класс TAction.


Marcus   (2002-11-25 18:25:00) [4]

Один из вариантов решения - юзать TActionList. Тогда можно одно действие размножить по любому кол-ву PopupMenu без дублирования OnClick. Да и запрещать/разрешать пункты легче будет.
А можно на лету формировать это подменю "Создать" на событие OnPopup основного меню


Semion   (2002-11-25 18:20:00) [5]

Видимо плохо объяснил. Ничего особенно странного я не хочу :).
Ситуация такая - есть меню. В нем 2 пункта: Удалить и Добавить. Пункт Добавить открывает подменю. Мне нужно, что бы на нажатие Ctrl+Ins появлялось мое меню с уже открытым подменю Добавить.
Как это сделать - никак не могу найти.
Вроде нашел API - функцию HiliteMenuItem, но проблема в том, что после того, как я говорю PopUp основному меню, то программа останавливает до тех пор, пока не закроется окно с меню, соответственно не доходит дело и до HilitePopupMenu.


mrcat   (2002-11-25 16:17:00) [6]

>>При этом само PopupMenu можно и не показывать
подробнее можно проблему описать?


Игорь Шевченко   (2002-11-25 16:15:00) [7]

Чего-то странного хочешь ?
Или поподробнее объяснить не получается ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо