Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Левая или правая кнопка мыши, Как отследить какая именно нажата? 
V
    Опции темы
Sunvas
Дата 2.1.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Romikgy
Дата 2.1.2007, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



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 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sunvas
Дата 2.1.2007, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
bems
Дата 2.1.2007, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



GetAsyncKeyState


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Sunvas
Дата 2.1.2007, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
bems
Дата 2.1.2007, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



хм... 

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



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Romikgy
Дата 2.1.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



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

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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sunvas
Дата 2.1.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

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

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

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



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
skyboy
Дата 2.1.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Sunvas, а чем обусловлено такое желание усложнить жизнь левшам - можно поинтересоваться?
PM MAIL   Вверх
Sunvas
Дата 2.1.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Romikgy
Дата 2.1.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(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 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sunvas
Дата 2.1.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Romikgy
Дата 2.1.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



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

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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sunvas
Дата 2.1.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



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

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

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



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Romikgy
Дата 2.1.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



А так
Код

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 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.