Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

работа pop-up меню по нажатию клавиш, правой мыши..   Найти похожие ветки 

 
Nicky   (2003-06-09 18:38) [0]

проблемы такие
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-09 19:14) [1]

TMenuItem.onClick


 
clickmaker ©   (2003-06-09 19:36) [2]

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


 
Yanis ©   (2003-06-09 23:06) [3]

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

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

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


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

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


 
Yanis ©   (2003-06-10 10:02) [5]

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


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

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


 
Song ©   (2003-06-10 15:23) [7]

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



Страницы: 1 вся ветка

Текущий архив: 2003.08.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-33145
Юля
2003-07-28 07:10
2003.08.11
Буфер


14-33347
Dmitriy O.
2003-07-25 12:26
2003.08.11
Человечество это раковая опухоль земли.


1-33219
ehri
2003-07-29 15:58
2003.08.11
Memo


14-33322
Мимо проходил
2003-07-24 14:45
2003.08.11
Брата никто не видел?


1-33197
Егор
2003-07-29 06:04
2003.08.11
TActionMainMenuBar