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

Вниз

Узнать, нажата ли кнопка на мыши   Найти похожие ветки 

 
Alex_C   (2011-10-06 16:41) [0]

Как опросить состояние кнопок мыши в событии OnMouseMove?


 
Медвежонок Пятачок ©   (2011-10-06 16:44) [1]

F1 + последний абзац


 
И. Павел ©   (2011-10-06 16:52) [2]

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if (GetKeyState(VK_LBUTTON) AND 128) = 128
then Caption := "Кнопка нажата
else Caption := "Кнопка не нажата";
end;


 
Alex_C   (2011-10-06 17:00) [3]

То И.Павел: большое спасибо!


 
Медвежонок Пятачок ©   (2011-10-06 17:04) [4]

если кнопку нажали до входа курсора на контрол, тогда маусмува вообще не будет.

а если кнопка нажата над контролом, то достаточно шифтстейта чтобы понять какие кнопки зажаты.


 
Dennis I. Komarov ©   (2011-10-06 17:10) [5]

И еще, "128" писать не красиво, ибо не отображается булева сущность...


 
Ega23 ©   (2011-10-06 17:13) [6]


> И. Павел ©   (06.10.11 16:52) [2]
>
> procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
>  X,


http://docwiki.embarcadero.com/VCL/en/Classes.TShiftState


 
Бездомный   (2011-10-06 17:22) [7]


> если кнопку нажали до входа курсора на контрол, тогда маусмува
> вообще не будет.

Это вроде только для левой кнопки, нет?


 
Медвежонок Пятачок ©   (2011-10-06 17:29) [8]

в любом случае шифистейта достаточно


 
Inovet ©   (2011-10-06 17:43) [9]

> [5] Dennis I. Komarov ©   (06.10.11 17:10)
> И еще, "128" писать не красиво, ибо не отображается булева сущность...

И вообще число не красиво.


 
Jeer ©   (2011-10-06 17:45) [10]

const
b128 = 128;

:)


 
Dennis I. Komarov ©   (2011-10-06 18:02) [11]

$80


 
Inovet ©   (2011-10-06 18:07) [12]

> [10] Jeer ©   (06.10.11 17:45)
> const
> b128 = 128;

b1 = 1;
b2 = 2;
...
b128 = 128;

или из справки, которую автор проигнорировал

if ssLeft in Shift then
...


 
Омлет ©   (2011-10-06 18:18) [13]

if GetAsyncKeyState (VK_LBUTTON) and $8000 <> 0
 then Caption := "Кнопка нажата"
 else Caption := "Кнопка отжата";


 
И. Павел ©   (2011-10-06 20:26) [14]


> в любом случае шифистейта достаточно

его достаточно только в том случае, если он есть (например, был передан в качестве аргумента).


 
Ega23 ©   (2011-10-06 20:38) [15]


> его достаточно только в том случае, если он есть


Если ты дёргаешь обработчик события напрямую, то это, мягко говоря, тоже говорит о том, что следует подумать об архитектуре.


 
И. Павел ©   (2011-10-06 20:50) [16]


> Если ты дёргаешь обработчик события напрямую, то это, мягко
> говоря, тоже говорит о том, что следует подумать об архитектуре.
>

В таком случае вам стоило дать ответ на этот вопрос раньше меня, использовав actionlist, цепочку вызова функций и ООП. Это бы показало ваше интеллектуальное превосходство над автором, который, скорее всего, перешел на Delphi пару недель назад (но ваш пост в этой теме был адресован, почему-то не автору а мне, хотя и дублировал сказанное в [1]).

Я решил не мучить автора вопроса полунамеками и показал то, что он спрашивал.

Shiftstate – это тоже вариант решения, но т.к. его озвучили в [1], я решил предложить альтернативу.


 
Игорь Шевченко ©   (2011-10-06 21:11) [17]

И. Павел ©   (06.10.11 20:50) [16]

www.delphilamer.ru


 
И. Павел ©   (2011-10-06 21:44) [18]

Все равно. Главное - автору мой ответ помог. Дискутировать после этого о высоких материях и идеальных формах это уже в духе Васисуалия Лоханкина.


> Игорь Шевченко ©   (06.10.11 21:11) [17]

Хотел ответить, как обычно и поступаю, тоже, например, какой-нибудь необоснованной ссылкой, но мне вдруг показалось, что я уже вышел из возраста, когда интересно заниматься такими вещами.


 
KilkennyCat ©   (2011-10-06 23:02) [19]


> о высоких материях и идеальных формах это уже в духе Васисуалия
> Лоханкина.

вообще-то, ему достаточно было трех неидеальноформовых и невысокоматериальных: курица, свет в туалете и Варвара.

а почему 128 (0х80) ? разве не первыми идут мышиные?


 
И. Павел ©   (2011-10-07 08:17) [20]

> а почему 128 (0х80) ? разве не первыми идут мышиные?

Младший бит определяет "переключена" ли кнопка (например, горит ли CapsLock), а старший - нажата ли кнопка:

If the high-order bit is 1, the key is down; otherwise, it is up.
If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on.
The key is off and untoggled if the low-order bit is 0.
A toggle key"s indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.


(http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx)



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

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

Наверх




Память: 0.51 MB
Время: 0.016 c
8-1221912190
Elz
2008-09-20 16:03
2012.01.15
Помогите найти ошибку в коде


3-1269712883
dik59
2010-03-27 21:01
2012.01.15
Очередные загадки Firebird 2


2-1317818236
Alex_C
2011-10-05 16:37
2012.01.15
Копирование указателей


1-1279883255
killy
2010-07-23 15:07
2012.01.15
Variant как ссылка на OLE-объект


2-1317792498
petvv
2011-10-05 09:28
2012.01.15
Array of Char to String (ANSIString)=: