Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

X As Single, y As Single) ‘процедура обработки нажатия мышки

Form2.CurrentX = X: Form2.CurrentY = Y 'запоминание координат мышки

End Sub

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

X As Single, Y As Single) ‘процедура обработки перемещения мышки

Form2.AutoRedraw=True'восстановление рисунка после его удаления

IfButton= 1Then'нажата левая кнопка мыши

'рисование линии цветом Form1.Tag

Form2.Line(Form2.CurrentX, Form2.CurrentY) - (X, Y), Form1.Tag

ElseIf Button = 2 Then 'нажата правая кнопка мыши

'рисование линии цветом фона формы - стирание нарисованной линии

Form2.Line (Form2.CurrentX, Form2.CurrentY)-(X, Y), Form2.BackColor

End If

End Sub

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Когда наступает событие MouseDown?

  2. Каково назначение свойств формы CurrentX, CurrentY?

Контрольные вопросы

  1. Какие действия выполняет метод Move?

  2. Когда наступает событие DragDrop?

Глава 12. Клавиатура, печать

12.1. Клавиатура

Рассмотрим события, методы и свойства, связанные с клавиатурой.

KeyDown/KeyUpсобытия, происходящие при нажатии/отпус­кании клавиши для текущего объекта. В процедуре можно, например, проверить правильность вводимых символов. Процедуры обработки собы­тий имеют два параметра: ASCII-код нажатой (отпускаемой) клавиши и сум­ма чисел (именованных констант), отражающая состояние клавиш Shift, Ctrl и Alt. При этом: 1 (vbShiftMask) ‑ нажата клавиша Shift; 2 (vbCtrlMask) ‑ Ctrl; 4 (vbAltMask) ‑ Alt.

KeyPress‑ когда нажимается и затем отпускается клавиша, соответ­ствующая ASCII-символу, наступает данное событие. Специальные симво­лы, например F1, F2, не вызывают это событие. Процедура обработки этого события имеет один параметр ‑ ASCII-код нажатой клавиши.

При анализе кода клавиши вместо числового кода клавиши можно использовать клавиатурные константы вида vbKey<обозначение клави­ши>, например: vbKeyNumLock, vbKeyF1, vbKeyHome, vbKeyX.

В этой процедуре можно, например, заменять символы:

Private Sub Form_KeyPress(KeyAscii As Integer) ‘нажатие клавиши

‘если нажата Enter, заменить ее код на 0 (игнорирование нажатия)

If KeyAscii=vbKeyReturn Then KeyAscii=0 ‘игнорирование клавиши Enter

End Sub

Пример. Заменять при вводе строчные буквы на заглавные.

Private Sub Form_KeyPress(KeyAscii As Integer) ‘замена букв

KeyAscii=Asc(Ucase(Chr(KeyAscii))) ‘перевод всех букв в заглавные

End Sub

Если нужно выполнение этих процедур независимо от того, где находится фокус, то для формы следует указать свойство KeyPreview=True. В этом случае будут всегда выполняться эти процедуры обработки событий формы, т.е. форма “перехватывает” событие клавиатуры и выполняет их перед тем, как выполнить процедуры, связанные с объектом, обладающим фокусом.

Клавиши Tab (Shift+Tab) используются для перемещения фокуса на следующий (предыдущий) доступный объект с большим (меньшим) номером, который задан свойством TabIndex.

12.2. Имитация нажатий клавиш

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

Покажем на примере имитацию нажатия клавиш. Создадим две программы MoveFrom (Передатчик), MoveTo (Приемник). Программа MoveFrom будет имитировать нажатие клавиш для программы MoveTo. В обеих программах есть поле Text1 (рис. 12.2.1). Программу MoveTo оформим в виде Exe-файла, используя команду File/Make MoveTo.exe.

Рис. 12.2.1. Формы программ MoveFrom и MoveTo

Выполните программу MoveFrom, введите текст в поле Text1 этой программы и нажмите кнопку Послать нажатие клавиш, набранный текст окажется в поле Text1 программы MoveTo как будто этот текст был введен с клавиатуры.

Приведем текст процедур программы MoveFrom.

Private Sub Form_Load() ‘процедура загрузки формы программы

Dim Id ‘объявление переменной

‘функция Shell запускает программу MoveTo.Exe. Первый ее параметр ‘указывает имя исполняемого файла, а второй ‑ стиль окна приложения ‘(значение 1 задает нормальный стиль)

Id = Shell(”moveto.exe”, 1)

End Sub

Private Sub Command1_Click() ‘кнопкаПослать нажатие клавиш

‘оператор AppActivateделает активным приложениеMoveToс заголовком ‘формы “Приемник”

AppActivate “Приемник” ‘активизируется форма с заголовком “Приемник”

‘оператор SendKeys посылает значение поля Text1 активной форме ‘“Приемник” в качестве нажатий клавиш для его текущего поля Text1.

‘Второй параметр True означает, что нажатия клавиш должны быть

‘обработаны приемником, прежде чем передатчик вернет управление себе.

SendKeys Text1.Text, True

End Sub

Процедуры кнопок Выходсодержат один оператор End.

Обозначения специальных клавиш, кроме Shift, Ctrl, Alt, заключаются в приемнике в фигурные скобки ({Del}{Enter}{F10}). Некоторые специальные символы имеют собственные обозначения:

+ (Shift), ^ (Ctrl), % (Alt), Down (стрелка вниз), Left (стрелка влево), Right (стрелка вправо), UP (стрелка вверх). Клавиши в комбинации соединяются.

Пример.%D для клавиш Alt+D.

Активным приложением может быть и сама программа‑передатчик. В этом случае функция Shell не используется, но аналогично используются операторы AppActivate и SendKeys.