Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Определение нажатие кнопки мыши


Автор: Herp 6.4.2006, 18:53
Всем привет!

Имеется обычный TButton и есть у него событие OnClick.

На это событие указаны 2 процедуры, порядок выполнения которых определят - какая кнопка мыши была нажата на кнопке, т.е. если кликнули по TButton правой кнопкой мыши значит выполняем процедуру 1, если левой - то процедура 2.

Как такое можно решить?

Программирую на Delphi 5.
Пасибо!

Автор: _hunter 6.4.2006, 18:58
лехко: если выполнение дошло до обработчика OnClick -- выполняй первую процедуру; иначе вторую

Автор: Guedda 6.4.2006, 19:08
Необходимо юзать не OnClick, а OnMouseDown();
Вот так:
Код

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then procedure_2 else
  if Button = mbRight then procedure_1;
end;

Автор: Poseidon 6.4.2006, 19:17
Цитата(Guedda @ 6.4.2006, 18:08 Найти цитируемый пост)
OnMouseDown();
Лучше OnMouseUp, т.к. даже стандартное OnClick выполняется после отпускания кнопки, а не после ее нажатия. Можно ведь нажать и держать smile И обычно в таких случаях ничего не выполняется, пока не отпустил smile

Автор: Sunvas 7.4.2006, 07:40
Только еще нужно не забыить перерисовать кнопку при нажатии правой. Это нужно для того, чтобы кнопка вогунулась и казалась нажатой.

Автор: Herp 7.4.2006, 08:48
Пасибо за советы, но мне именно по событию OnClick надо сотвотворить данное чудо...
Добавлено @ 08:50
_hunter, а как определять такой момент, smile ?

Автор: Snowy 7.4.2006, 08:57
http://forum.vingrad.ru/index.php?showtopic=88030

Автор: Herp 7.4.2006, 10:17
Пасибо, Snowy, за подсказку smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)