![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Необходимо в 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]Чего-то странного хочешь ?
Или поподробнее объяснить не получается ?