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

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

работа pop-up меню по нажатию клавиш, правой мыши.. [D5, Win2k]


Nicky ©   (2003-06-09 18:38:00) 

проблемы такие
1 - пункт меню активизируется по нажатию мыши - левой или правой. хочу иметь разную обработку от левой и от правой мыши.
2 - аналогично хотелось бы обрабатывать нажатие на menuiteme клавиш (не hotkeys!) - Del, Ins, пробел

чувствую, что надо править этот кусок из menus.pas

procedure TPopupList.WndProc(var Message: TMessage);
...
case Message.Msg of
WM_COMMAND:
for I := 0 to Count - 1 do
if TPopupMenu(Items[I]).DispatchCommand(Message.wParam) then Exit;

а вот как править - ума не приложу...


Song   (2003-06-10 15:23:00) [1]

>>MenuItem не происходит от TControl и в OnClick не шлет Button, Shift, etc.. а шлет лишь себя любимого.
Понятно, я советовал это только лишь как способ отследить сам факт нажатия.
>>может, есть APIшная процедура, которая возвращает состояние мыши?
А вот это уже ближе. Я тебя как раз к этому вопросу и подводил.
GetAsyncKeyState()


Nicky   (2003-06-10 12:45:00) [2]

вероятно не нашлось чем. TMenuItem не происходит от TControl и в OnClick не шлет Button, Shift, etc.. а шлет лишь себя любимого.
может, есть APIшная процедура, которая возвращает состояние мыши?
я ее не нахожу...


Yanis   (2003-06-10 10:02:00) [3]

Извиняюсь за некорректность. Но вроде понять можно. Если есть чем понимать.


Song   (2003-06-09 23:58:00) [4]

2Yanis © (09.06.03 23:06)
Из Вашей процедуры неясно откуда возьмётся переменная Button


Yanis   (2003-06-09 23:06:00) [5]

To Nicky
>1 - пункт меню активизируется по нажатию мыши - левой или правой. хочу иметь разную обработку от левой и от правой мыши.

procedure onclick;
begin
if button=mbLeft then showMessage("left_mouse button") else
ShowMessage("right_mouse button")
end;

Надеюсь понятно.


clickmaker   (2003-06-09 19:36:00) [6]

Ловить WM_MENUCHAR у формы, которая владеет меню. Это для клавиш. А вот для кнопок мыши... Тут стандартное TPopupMenu не потянет, думаю...


Song   (2003-06-09 19:14:00) [7]

TMenuItem.onClick


Наверх

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