Як опитати стан кнопок миші в подію OnMouseMove?
F1 + останній абзац
procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState; X,
# XA0; Y: Integer);
begin
if (GetKeyState (VK_LBUTTON) AND 128) = 128
then Caption: = "Кнопка натиснута
else Caption: = "Кнопка не було натиснуто";
end;
Те І.Павел: велике спасибі!
якщо кнопку натиснули до входу курсору на контрол, тоді маусмува взагалі не буде.
а якщо кнопка натиснута над контролом, то досить шіфтстейта щоб зрозуміти які кнопки затиснуті.
І ще, "128" писати не красиво, бо не відображається булева сутність.
> Якщо кнопку натиснули до входу курсору на контрол, тоді маусмува
> Взагалі не буде.
Це начебто тільки для лівої кнопки, немає?
в будь-якому випадку шіфістейта досить
const
b128 = 128;
if GetAsyncKeyState (VK_LBUTTON) and $ 8000. <> 0
# XA0; then Caption: = "Кнопка натиснута"
# XA0; else Caption: = "Кнопка відтиснуті";
> В будь-якому випадку шіфістейта досить
його досить тільки в тому випадку, якщо він є (наприклад, був переданий в якості аргументу).
> Його досить тільки в тому випадку, якщо він є
Якщо ти смикаєш обробник події безпосередньо, то це, м'яко кажучи, теж говорить про те, що слід подумати про архітектуру.
Shiftstate - це теж варіант вирішення, але тому що його озвучили в [1], я вирішив запропонувати альтернативу.
> Про високі матерії і ідеальних формах це вже в дусі Васисуалія
> Лоханкіна.
взагалі-то, йому досить було трьох неідеальноформових і невисокоматеріальних: курка, світло в туалеті і Варвара.
а чому 128 (0х80). хіба не першими йдуть мишачі?
> А чому 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.
Пам'ять: 0.76 MB
Час: 0.056 c