Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1316837540
SQLEX
2011-09-24 08:12
2012.01.15
идиотека..


15-1317426033
Кто б сомневался
2011-10-01 03:40
2012.01.15
Замедленный скролл при включенном видео в Win 7


2-1317776310
Eeuwige Rouw
2011-10-05 04:58
2012.01.15
TMediaplayer


15-1317550613
Loginov Dmitry
2011-10-02 14:16
2012.01.15
Indy - работа с электронной почтой


15-1317041117
LDV
2011-09-26 16:45
2012.01.15
сформулировать текст сообщения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский