Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб13_VisualBasic.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
238.08 Кб
Скачать

1.4. Событие MouseMove

Private Sub объект_MouseMove ([индекс As Integer,] Button As Integer, Shift As Integer, x As Single, y As Single)

Возникает при перемещении мыши над объектом.

По значению необязательной переменной индекс можно отследить, над каким элементом массива объектов Control Array (если массив существует) происходит перемещение.

Переменная Button указывает состояние всех кнопок мыши, а не указывает на какую-нибудь одну, как при событиях MouseDown или MouseUp. Поэтому значения кнопок (1 – левая, 2 – правая, 4 – средняя, 0 – никакая) складываются (1+2=3 нажаты левая и правая кнопки мыши одновременно).

Переменная Shift возвращает состояние клавиш Shift, Alt и Ctrl в момент нажатия кнопок мыши (1 – Shift, 2 – Alt и 4 – Ctrl). При удержании больше одной клавиши их значения складываются (Ctrl-Alt = 4+2=6).

Значения переменных x и y возвращают текущие координаты курсора мыши (x – по горизонтали, y – по вертикали) в единицах измерения, заданных свойствами ScaleHeight, ScaleWidth.

Тут надо помнить один очень важный момент. Порядок наступления событий различен для различных элементов. Нужно следить, чтобы события (время их наступления) не противоречили друг другу. Если написать две процедуры, одну на событие Click, а вторую – на DblClick в надежде, что они будут выполняться в зависимости от наступившего события, то процедура DblClick не будет выполняться никогда, поскольку событие Click наступит раньше, начнется выполнение ее процедуры.

2. Работа с клавиатурой

2.1. Событие KeyPress

Private Sub Form_KeyPress (код_ascii As Integer)

Private Sub объектt_KeyPress ([индекс As Integer,]код_ascii As Integer)

Возникает при нажатии и отпускании кнопки клавиатуры, если объект получил фокус.

Индекс определяет элемент массива, если имеется массив объектов.

Код_ascii – стандартный ANSI код клавиши. Событие KeyPress может получать любые печатаемые символы, символы клавиши CTRL в сочетании с символом стандартного алфавита или один из специальных символов, а также клавиши ENTER или BACKSPACE.

Распознает верхний и нижний регистры каждого символа как различные коды клавиш.

Если присвоено значение True свойства KeyPreview, то форма получает событие раньше, чем элементы управления формы.

2.2. События KeyDown и KeyUp

Создайте проект из одной формы, без элементов управления. Зайдите в окно кода и выберите для объекта Form событие KeyDown. В появившуюся заготовку процедуры запишите следующий код:

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

' Определяем, какая клавиша клавиатуры была нажата:

Select Case KeyCode

Case vbKeyUp: Debug.Print "Нажата стрелка вверх"

Case vbKeyDown: Debug.Print "Нажата стрелка вниз"

Case vbKeyLeft: Debug.Print "Нажата стрелка налево"

Case vbKeyRight: Debug.Print "Нажата стрелка направо"

Case vbKeyW: Debug.Print "Нажата клавиша W"

Case vbKey7: Debug.Print "Нажата клавиша 7"

Case vbKeySpace: Debug.Print "Нажата клавиша пробела"

Case vbKeyDelete: Debug.Print "Нажата клавиша Delete"

Case vbKeyF4: Debug.Print "Нажата клавиша F4"

Case vbKeyAdd: Debug.Print "Нажата клавиша +"

Case vbKeyEscape: Debug.Print "Нажата клавиша Esc"

End Select

' Определяем, какие из трех клавиш клавиатуры (Shift, Ctrl, Alt)

' при этом были в нажатом состоянии:

Select Case Shift

Case 0: Debug.Print "Не нажата ни одна клавиша Shift, Ctrl, Alt"

Case 1: Debug.Print "Нажата клавиша Shift"

Case 2: Debug.Print "Нажата клавиша Ctrl"

Case 3: Debug.Print "Нажаты клавиши Shift, Ctrl"

Case 4: Debug.Print "Нажата клавиша Alt"

Case 5: Debug.Print "Нажаты клавиши Shift, Alt"

Case 6: Debug.Print "Нажаты клавиши Ctrl, Alt"

Case 7: Debug.Print "Нажаты клавиши Shift, Ctrl, Alt"

End Select

End Sub

Параметры процедуры:

  • KeyCode – код нажатой клавиши. На клавиатуре – сто с лишним клавиш. На каждой – по две буквы или один, два, три других символа. Компьютер различает клавиши независимо от того, какие значки на них нанесены. Так мать различает сыновей независимо от того, что написано у них на майках. У каждого сына есть имя, у каждой клавиши есть код (KeyCode). Итак, попросту говоря, компьютер сообщает процедуре, какая клавиша была нажата. Полный список кодов находится в Object Browser (класс KeyCodeConstants).

  • Shift – были ли при этом в нажатом состоянии клавиши клавиатуры (Shift, Ctrl, Alt) и какие именно. В численном значении Shift та же система, что и в событии MouseDown. Совместное нажатие клавиш Shift, Ctrl, Alt "равно" сумме их нажатий по-одиночке (1, 2 и 4).

Запустите проект и проверьте, как работает программа. Обратите внимание, что при удержании клавиш в нажатом состоянии событие генерируется (создается компьютером) несколько раз в секунду. Положение несколько меняется, когда при нажатой Shift, Ctrl или Alt щелкается обычная клавиша.

События, связанные с клавиатурой, имеются у многих объектов. Поместим на форму, к примеру, пару кнопок и текстовое поле. Предположим, процедуру Private Sub Form_KeyDown мы стерли, а написали три процедуры:

Private Sub Command1_KeyDown…

Private Sub Command2_KeyDown…

Private Sub Text1_KeyDown…

Запустим программу и щелкнем по какой-нибудь клавише. Какая из трех процедур сработает? Та, чей объект находится в фокусе.

Событие KeyUp работает аналогично.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]