Бщие сведения о событиях мышки

Во многих программах – приложениях Windows команды и действия выполняются при помощи манипулятора (мышка). Для обработки команд мышки С++ Builder имеет такие зарезервированные события:

Обозначение события Описание события
OnClick Щелчок мыши на компоненте и некоторые другие действия пользователя.
OnDblClick Двойной щелчок мыши на компоненте.
OnMouseDown Нажатие клавиши мыши над компонентом. Возможно определение нажатой кнопки и координат курсора мыши.
OnMouseMove Перемещение курсора мыши над компонентом. Возможно определение нажатой кнопки и координат курсора мышки.
OnMouseUp Отпускание ранее нажатой кнопки мыши над компонентом. Возможно определение нажатой кнопки и координат курсора мыши.
OnStartDrag Начало процесса «перетаскивания» объекта. Возможно определение перетаскиваемого объекта.
OnDragOver Перемещение «перетаскиваемого » объекта над компонентом. Возможно определение перетаскиваемого объекта и координат курсора мыши.
OnDragDrop Отпускание ранее нажатой кнопки мыши после «перетаскивания» объекта. Возможно определение перетаскиваемого объекта и координат мыши.
OnEndDrag Еще одно событие при отпускании ранее нажатой кнопки мыши после «перетаскивания» объекта. Возможно определение перетаскиваемого объекта и координат курсора мыши.
OnEnter Событие в момент получения элементом фокуса в результате манипуляции мышью, нажатия клавиши табуляции или программной передачи фокуса.
OnExit Событие в момент потери элементом фокуса в результате манипуляции мышью, нажатия клавиши табуляции или программной передачи фокуса
OnMouseWheel Событие при вращении колесика мыши в любую сторону.
OnMouseWheelUp Вращение колесика мыши вверх. Наступает, если вращение не обработано по событию OnMouseWheel.
OnMouseWheelDown Вращение колесика мыши вниз. Наступает, если вращение не обработано по событию OnMouseWheel.

В программах наиболее широко используется событие OnClick. Обычно оно наступает, если пользователь щелкнул на компоненте, т. е. нажал и отпустил кнопку мыши, когда указатель мыши находился на компоненте. Но это событие происходит также и при некоторых других действиях пользователя. Оно наступает, если:

üПользователь выбрал элемент в сетке, дереве, списке, выпадающем списке, нажав клавишу со стрелкой;

üПользователь нажал клавишу пробела, когда кнопка или индикатор были в фокусе;

üПользователь нажал клавишу Enter , а активная форма имеет кнопку по умолчанию, указанную свойством Default;

üПользователь нажал клавишу Esc , а активная форма имеет кнопку прерывания, указанную свойством Cancel;

üПользователь нажал клавиши быстрого доступа к кнопке или индикатору. Например, если свойство Caption индикатора записано как «&Полужирный» и символ ‘П’ подчеркнут, то нажатие пользователем комбинации клавиш Alt + П вызовет событиеOnClick в этом индикаторе;

üПриложение установило в trueсвойствоCheckedрадиокнопки RadioButton;

üПриложение изменило свойство CheckedиндикатораCheckBox;

üВызван метод Click элемента меню;

üДля формы событие OnClickнаступает, если пользователь щелкнул на пустом месте формы или на недоступном компоненте.

При проектировании приложения определяется последовательность табуляции оконных компонент. Под этим понимается последовательность, в которой переключается фокус с компоненты на компонент, когда пользователь нажимает клавишу Tab. Свойство формы ActiveControl, установленное в процессе проектирования, определяет, какой из размещенных на форме компонентов будет в фокусе в первый момент при выполнении приложения. В процессе выполнения это свойство изменяется и показывает тот компонент, который в данный момент находится в фокусе.

Последовательность табуляции задается свойством TabOrder компонентов. Первоначальная последовательность табуляции определяется просто той последовательностью, в которой размещались управляющие элементы на форме. Первому элементу присваивается значение TabOrder , равное 0, второму 1,и т. д. Значение TabOrder, равное нулю, означает, что при первом появлении формы на экране в фокусе будет именно этот компонент (если не задано свойство формы ActiveControl ).

Во все обработчики событий, связанных с манипуляциями мыши (как и во все другие обработчики), передается параметр Sender типа Tobject . Этот параметр содержит указатель на компонент, в котором произошло событие. Он не требуется, если пишется обработчик события для конкретного компонента. Параметр Senderможно использовать для распознования источника события. Например, оператор

if (Sender = = Image1)

……;

Помимо параметра Senderв обработчики событий OnMouseDown и OnMouseUpпередаются параметры, позволяющие распознать нажатую кнопку мыши, нажатые при этом вспомогательные клавиши, а также определить координаты курсора мыши. Заголовок обработчика события OnMouseDownможет иметь, например, следующий вид:

void_fastcall TForm1:: Image1MouseDown(Tobject * Sender, TMouseButton Button, TShiftState Shift, int X, int Y)

Дополнительно к параметру Senderв обработчик передаются параметры Button, Shift, X, Y. Параметр Buttonопределяет нажатую в этот момент кнопку мыши. Тип TmouseButton – перечисляемый тип, определяемый следующим образом

enum TmouseButton{ mbLeft, mbRight, mbMiddle};

Значение mbLeftсоответствует нажатию левой кнопкой мыши, значение mbRight – правой, а значение mbMiddle – средней. Например, если вы хотите, чтобы обработчик реагировал на нажатие только левой кнопки мыши, можно его первым оператором написать:

if (Button ! = mbLeft) return;

В этом случае, если значение Buttonне равно mbLeft, т. е. была нажата не левая кнопка мыши, выполнение обработчика прервется.

Параметр Shif типа TshiftState определяет, какие вспомогательные клавиши на клавиатуре нажаты в момент нажатия кнопки мыши.

Во все события, связанные с мышью, передаются также координаты курсора X и Y. Эти параметры определяют координаты курсора в клиентской области компонента. Благодаря этому можно обеспечить различную реакцию в зависимости от того, в какой части клиентской области расположен курсор мыши.

В С++ Builder имеется встроенный редактор изображений Image Editor, который вызывается командой Tools/ Image Editor . Данный редактор позволяет создавать изображения в виде битовых матриц, пиктограмм, изображений курсоров и их сохранять не только в виде файлов, но и сразу же их включать в файл ресурсов приложения. В этом и заключается основное отличие встроенного редактора С++ Builder от других более мощных графических редакторов. Работа начинается с меню File, в котором можно выбрать раздел Open – открыть новый файл изображения или ресурсов, или раздел New – создать новый файл. Если выбрана команда New,то предварительно предлагается сделать выбор вида файла, который нужно создать:

Resource File (.res) Файл ресурсов
Component Resource File (.dcr) Файл ресурсов компонента
Bitmap File (.bmp) Файл битовой матрицы
Icon File (.ico) Файл пиктограммы
Cursor File (.cur) Файл изображения курсора

Наши рекомендации