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


Автор: Sunvas 2.1.2007, 01:28
Собственно САБЖ для любого контрола. Но это нужно отследить независимо от параметров мыши в системе (для правши/левши)/

Автор: Romikgy 2.1.2007, 01:30
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_RBUTTONDOWN
WM_RBUTTONUP

Добавлено @ 01:32 
type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object;
property OnMouseDown: TMouseEvent;
type TMouseButton = (mbLeft, mbRight, mbMiddle);
 smile 

Автор: Sunvas 2.1.2007, 01:36
Цитата(Romikgy @  2.1.2007,  01:30 Найти цитируемый пост)
type TMouseButton = (mbLeft, mbRight, mbMiddle);

Читаем тему внимательно: нужно отследить независимо от того, какие настройки системы! Это значит что если в настройках будет стоя "для левши" то mbleft на самом деле будет правой кнопкой!

Автор: bems 2.1.2007, 01:53
GetAsyncKeyState

Автор: Sunvas 2.1.2007, 02:02
Цитата(bems @  2.1.2007,  01:53 Найти цитируемый пост)
GetAsyncKeyState

Ну и как это к контролу привязать?

Автор: bems 2.1.2007, 03:40
хм... 

Ну тогда 
Цитата(Romikgy @  2.1.2007,  01:30 Найти цитируемый пост)
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_RBUTTONDOWN
WM_RBUTTONUP
+
GetSystemMetrics(SM_SWAPBUTTON)

Автор: Romikgy 2.1.2007, 15:35
Sunvas, система сама подменяет мессаги, и если в системе установлен левша , то уже правая кнопка мыши дает мессагу 
Цитата(Romikgy @  2.1.2007,  00:30 Найти цитируемый пост)
WM_LBUTTONDOWN

так что имхо не парься пиши как обычно а все сделает система  smile 

Автор: Sunvas 2.1.2007, 15:40
Цитата(Romikgy @  2.1.2007,  15:35 Найти цитируемый пост)
Sunvas, система сама подменяет мессаги, и если в системе установлен левша , то уже правая кнопка мыши дает мессагу 

Цитата(Romikgy @  2.1.2007,  00:30 )    
WM_LBUTTONDOWN    

так что имхо не парься пиши как обычно а все сделает система 

Это предложения "забить"?

Автор: skyboy 2.1.2007, 15:47
Sunvas, а чем обусловлено такое желание усложнить жизнь левшам - можно поинтересоваться?

Автор: Sunvas 2.1.2007, 15:54
Цитата(skyboy @  2.1.2007,  15:47 Найти цитируемый пост)
Sunvas, а чем обусловлено такое желание усложнить жизнь левшам - можно поинтересоваться?

Вобщем-то я себе жизнь упрощаю + самому интересно + препод по программироваию задал написать. smile 

Автор: Romikgy 2.1.2007, 16:04
Цитата(Sunvas @  2.1.2007,  14:40 Найти цитируемый пост)
Это предложения "забить"?

нет , я просто хотел , сказать , чтобы не обращал внимания на такие мелочи
вот создай пустую форму и него обработчик
Код

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button=mbleft then
MessageBox(0,'Left','Left',0);
end;

и в консоли поменяй мышь на левшу и увидишь , что терь надпись стала появляться при нажатии на правую кнопку мыши , без изменения исходника  smile 

Автор: Sunvas 2.1.2007, 16:16
Цитата(Romikgy @  2.1.2007,  16:04 Найти цитируемый пост)
и в консоли поменяй мышь на левшу и увидишь , что терь надпись стала появляться при нажатии на правую кнопку мыши , без изменения исходника   

Да, я это заметил, еще когда создавал тему.
Или я не понял смысла твоего поста или ты не можешь понять чего я хочу.

Автор: Romikgy 2.1.2007, 16:20
Цитата(Sunvas @  2.1.2007,  15:16 Найти цитируемый пост)
или ты не можешь понять чего я хочу. 

тогда поясни в более понятных словах

Автор: Sunvas 2.1.2007, 16:41
Цитата(Romikgy @  2.1.2007,  16:20 Найти цитируемый пост)
тогда поясни в более понятных словах

На мыши есть две кнопки (их может быть и больше, но мы рассмотрим только те мыши, где их две). smile 
Пользователь кликнул по какому-н контролу (не важно какому). 
Нужно определить какую кнопку мыши физически нажал пользователь. Это значит, что есть форма, по ней кликают мышью. Если клик произошел от физического нажатия кнопки, которая слева то должна выскочить мессага что "левая кнопка", а если той, что справа - "правая кнопка".

При этом мышь лежит по центру стола, за компьютер садяться как левурикие так и праворукие юзеры и сразу же подстраивают мышь под себя. При использовании программы (описана выше) никто из пользователей не должен сказать "программа врет!".
Так ясно?

Автор: Romikgy 2.1.2007, 17:01
А так
Код

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var sx: Boolean;
begin
case Button of
   mbLeft: sx:=True;
   mbRight: sx:=False;
   end;
   if GetSystemMetrics(SM_SWAPBUTTON )>0 then
   sx:=not sx;
   if sx then MessageBox(0,'Left','Mouse',0)
   else   MessageBox(0,'Rigth','Mouse',0);
end;

 скажи сиба
bems  smile 

Автор: Sunvas 2.1.2007, 17:36
Ок. bems Спасибо!

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