Бщие сведения о событиях мышки
Во многих программах – приложениях 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) | Файл изображения курсора |