Главная страница
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.022 c
3-33073
Ivan1973
2003-07-18 20:49
2003.08.11
TADOTable


14-33361
UserName
2003-07-23 20:37
2003.08.11
Задачка...


3-33061
alexander_ua
2003-07-17 15:54
2003.08.11
Перенос данных с Paradox в Interbase.


8-33229
-Sesh-
2003-04-17 11:36
2003.08.11
Delphi & TVTuner


6-33248
elf_123
2003-06-04 19:32
2003.08.11
Глюки сокетов...