курсор миші

курсор миші

чому процедура
procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton;
# XA0; Shift: TShiftState; X, Y: Integer);
begin
Cursor: = crHourGlass;
end;
змінює курсор миші тільки коли настав MouseUp?
Заздалегідь дякую.


> Cursor: = crHourGlass;

А якщо спробувати написати
Screen.Cursor: = crHourGlass;


> Чому процедура
> Procedure TForm1.FormMouseDown (Sender: TObject; Button:
> TMouseButton;
> # XA0; Shift: TShiftState; X, Y: Integer);
> begin
> Cursor: = crHourGlass;
> End;
> Змінює курсор миші тільки коли настав MouseUp?

Мабуть, якась помилка в текстах модулів Delphi. Зверни увагу, що курсор змінюється після відпускання миші тільки для лівої кнопки. Для середньої і правої він змінюється відразу.

> А якщо спробувати написати
> Screen.Cursor: = crHourGlass;

Це допомагає. Є ще один варіант, більш складний: перевизначити обробник події WM_LEFTBUTTONDOWN:
unit Unit1;

uses
# XA0; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
# XA0; TForm1 = class (TForm)
# XA0; private
# XA0; # XA0; procedure OnLeftButtonDown (var Msg: TMsg); message WM_LBUTTONDOWN;
# XA0; public
# XA0; # XA0;
# XA0; end;

var
# XA0; Form1: TForm1;

procedure TForm1.OnLeftButtonDown (var Msg: TMsg);
begin
# XA0; Cursor: = crHourGlass;
end;


> Мабуть, якась помилка в текстах модулів Delphi. Зверни
> Увагу, що курсор змінюється після відпускання миші тільки
> Для лівої кнопки. Для середньої і правої він змінюється відразу.
>
>

Навряд це помилка. Скоріше справа в тому, що ліва кнопка за стандартом строго задіяна тільки на тих контроль, які можна "кликнути" або "натиснути". А от права (щодо середньої нічого не знаю).

До речі, між цими двома варіантами є різниця. Припустимо на формі розміщена кнопка TButton. Якщо використовувати Screen.Cursor: = crHourGlass, курсор зміниться і над формою і над кнопкою. Якщо використовувати вище описаний метод перевизначення обробника, курсор зміниться тільки над формою, над кнопкою він залишиться тим самим.


> А от права (щодо середньої нічого не знаю).

Це коліщатко мишки. Їм теж можна клікати.

Коліщатко - це коліщатко. Ніякого, крім механічного, відношення до середньої кнопки не має.

Screen.Cursor: = crHourGlass; допомогло. Всім дякую.

Схожі статті