Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
ВнизУзнать, нажата ли кнопка на мыши Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c