Работа с клавиатурой и мышью

Большинство программ созданных для работы в среде MS Windows имеют GUI интерфейс (графический интерфейс пользователя). Для работы с такой программой используются определенные клавиатурные комбинации и действия, выполненные с помощью «мыши». Для работы с клавиатурой и «мышью» разработчик программы на Visual Basic может использовать следующие события:

1. Событие KeyPress. Возникает при нажатии клавиши, когда определенный визуальный компонент интерфейса находится в фокусе.

Private Sub idElement_KeyPress(KeyAscii As Integer)

‘Операторы

End Sub

Где KeyAscii – код нажатой клавиши.

2. События KeyUp, KeyDown. Порождаются когда пользователь отпускает клавишу, либо нажимает. Для отслеживания этих событий свойство формы KeyPreview формы должно получить значение TRUE. В общем виде события нажатия клавиш имеют структуру:

Private Sub Form_[KeyDown|KeyUp](KeyCode As Integer, Shift As Integer)

‘Код события

End Sub

KeyCode – код клавиши.

Shift – код регистровой клавиши.

В Visual Basic каждой клавише соответствует определенная константа. Например vbKeyA – клавиша A, vbKeyF – клавиша F. Регистр клавиши не учитывается.

Для учета регистровых клавиш используется параметр Shift. Который может принимать одно из следующих значений:

Константа Код
vbShiftMask
VbCtrlMask
VbAltMask

Отслеживание событий «мыши» выполняется с помощью событий:

MouseMove – порождается при перемещении курсора мыши, MouseDown –появляется при нажатии кнопки «мыши», MouseUp – порождается при отпускании кнопки мыши.

Формат события:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer,

X As Single, Y As Single)

‘Код события

End Sub

Button – код клавиши «мыши».

Shift – код регистровой клавиши.

X,Y – координаты курсора мыши.

Коды клавиш «мыши»:

Константа Код
vbLeftButton
vbRightButton
vbMiddleButton

Пример №1. Нажатие клавиши на командной кнопке.

Private Sub Command1_KeyPress(KeyAscii As Integer)

If KeyAscii = Asc("a") Then MsgBox (" Key - a ")

If KeyAscii = 27 Then MsgBox (" Key - ESC ! ")

End Sub

Пример №2. Проверка набора пользователем ключевого слова EGG при работе с формой. Если ключевое слово набрано, то выводится окно с текстом сообщения.

Dim buffer As String * 3

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

‘Буква Е

If KeyCode = vbKeyE And Shift = vbShiftMask Then

buffer = Mid(buffer, 2) + "E"

End If

‘Буква G

If KeyCode = vbKeyG And Shift = vbShiftMask Then

buffer = Mid(buffer, 2) + "G"

End If

‘Контрольное слово

If buffer = "EGG" Then

MsgBox "OK !", vbInformation, ""

buffer = ""

End If

End Sub

Пример №3. Отслеживание движения курсора «мыши». При нажатой левой кнопке координаты выводятся в заголовке формы.

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim mesXY As String

If Button = vbLeftButton Then ‘левая кнопка

mesXY = "X=" + Str(X) + " Y=" + Str(Y)

End If

Form1.Caption = mesXY ‘вывод координат

End Sub