Управление мышью
В VCL имеется класс TMouse, содержащий свойства мыши, установленной на компьютере. Обращаться к экземпляру класса, который создается автоматически, можно при помощи глобальной переменной Mouse. Свойства класса представлены в табл. 27.1.
В качестве примера обработки управляющих воздействий от мыши рассмотрим пример DemoMouse. Он очень прост. Перемещение мыши с нажатой левой кнопкой обеспечивает выделение прямоугольного фрагмента. Такую функцию вы можете наблюдать в любом графическом редакторе, а исходный код проекта использовать в собственных разработках (листинг 27.2).
Таблица 27.1. Свойства и методы класса mouse.
Объявление | Тип | Описание |
---|---|---|
property Capture: HWND; | Pu | Дескриптор элемента управления, над которым находится мышь |
property CursorPos: TPoint; | Pu | Содержит координаты указателя мыши |
property Draglmmediate: Boolean; | Ro | При значении True реакция на нажатие выполняется немедленно |
property DragThreshold: Integer; | Ro | Задержка реакции на нажатие |
property MousePresent: Boolean; | Ro | Определяет наличие мыши |
type UINT = LongWord; property RegWheelMessage: UINT; | Ro | Задает сообщение, посылаемое при прокрутке в ScrollMouse |
property WheelPresent: Boolean; | Ro | Определяет наличие ScrollMouse |
property WheelScrollLines: Integer; | Ro | Задает число прокручиваемых линий |
При нажатии левой кнопки мыши в методе-обработчике FormMouseDown включается режим рисования прямоугольника (isDown: = True) и задаются его начальные координаты.
При перемещении мыши по форме проекта вызывается метод-обработчик FormMouseMove, в котором координаты курсора и размеры прямоугольника передаются на панель состояния. Если левая кнопка мыши нажата (isDown = True), то осуществляется перерисовка прямоугольника.
При отпускании кнопки мыши в методе FormMouseUp рисование прямоугольника прекращается (isDown: = False).
Если была нажата правая кнопка мыши, то метод-обработчик FormMouseDown обеспечивает отображение диалога выбора цвета, который позволяет сменить цвет линий прямоугольника.
Метод-обработчик TimerTimer обеспечивает отображение на панели состояния текущей даты и времени.
Примечание
Для рисования прямоугольника использовался метод PolyLine, который работает при перемещении курсора влево и вверх относительно начальной точки. Для стирания старого прямоугольника желательно использовать режимы XOR и NOTXOR, которые обеспечивают восстановление рисунка под линией. Подробно об этом см. гл. 10.