17.5. УКАЗАТЕЛИ МЫШИ
При перемещении указателя мыши по экрану он может менять свою форму в зависимости от свойства Cursor компонента, над которым он расположен в данный момент:
property Cursor: TCursor;
type TCursor = -32768..+32767;
В Delphi предопределены стандартные указатели, показанные на рисунке 17.2.
Рис. 17.2. Стандартные курсоры Delphi
В практике программирования часто возникает необходимость изменения формы указателя для всех окон программы. Например, при выполнении достаточно длительного по времени процесса указатель мыши часто принимает вид crHourGlass, а после завершения процесса - восстанавливает свой первоначальный вид. Чтобы изменить форму указателя для всех окон программы одновременно, используется свойство cursor у глобального объекта screen, который автоматически создается для каждой программы:
Screen.Cursor := crHourGiass;
..... //Делаем длительную работу
Screen.Cursor := crDefault; // Восстанавливаем начальную
// форму указателя
Программист может создать и использовать нестандартный указатель. При этом он должен:
Рассмотрим процесс создания и использования нестандартного указателя на следующем примере, в котором создается и используется указатель в виде окружности.
Рис. 17.3. Окно редактора изображений с заготовкой для указателя мыши
{$R *.DFM} ($R Cursor.res}
procedure TForm1.FormCreate(Sender: TObject);
begin
// Регистрируем указатель:
Screen.Cursors[1] := LoadCursor(HInstance,'MYCURSOR');
// Используем его для клиентской части формы:
Cursor := 1
end;
Не забудьте указать комментарий {$r cursor, res}, чтобы компоновщик пристыковал ресурсный файл cursor, res к ресурсному файлу программы. После запуска программы вы увидите в клиентской части пустой формы нестандартный указатель. Замечу, что при регистрации указателя в screen, cursors индекс может быть любым числом в диапазоне от -32768 до +32767. Однако следует учитывать,
что индексы в диапазоне от -22 до -1 включительно заняты стандартными указателями, показанными на рис. 17.3 (индексы -5 и -1 соответствуют указателю crNone), а индекс 0 всегда связан со стандартным указателем Windows ^ и не может переопределяться.
Рис. 17.4 . Окно редактора с готовым изображением указателя