Шаг 59 - Проверка ввода на уровне формы (KeyDown, KeyUp, KeyPress)

События:

KeyDown

KeyUp

KeyPress

Посылаются форме когда производится ввод данных. Событие KeyPress возникает когда пользователь нажимает клавишу, у которой есть ASCII код. Это событие не сгенирируется при нажатии функциональных клавиш. При том эти события есть как у формы:

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub

Так и у элементов управления TextBox, например:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

End Sub

А это в свою очередь позволяет проверять ввод. Например, если в поле нужно ввести цифру, то легко проверить, что вводит пользователь. События KeyUp и KeyDown применяются для специальных функциональных клавиш или комбинаций типа Ctrl+Del, так как событие KeyPress их не отловит. Удобно использовать данное событие для проверки заполненности полей. Вот форма:

А вот код для нее. В момент нажатия ввода символа в поле проверяется заполненость полей:

Private Sub Test()

Dim ctrl As Control

Dim bool As Boolean

bool = True

For Each ctrl In Controls

If TypeName(ctrl) = "TextBox" Then

If ctrl.Text = "" Then

bool = False

End If

End If

Next ctrl

UserForm1.CommandButton1.Enabled = bool

End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Call Test

End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Call Test

End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Call Test

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: