Большинство программ созданных для работы в среде 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