2. The Visual Basic Language
Key Trapping
- Note in the previous example, there is nothing to prevent the
user from typing in meaningless characters (for example, letters)
into the text boxes expecting numerical data. Whenever getting input
from a user, we want to limit the available keys they can press. The
process of interecepting unacceptable keystrokes is key trapping.
- Key trapping is done in the KeyPress procedure of an object.
Such a procedure has the form (for a text box named txtText):
Sub txtText_KeyPress (KeyAscii as Integer)
End Sub
What happens in this procedure is that every time a key is pressed in
the corresponding text box, the ASCII code for the pressed key is passed
to this procedure in the argument list (i.e. KeyAscii). If
KeyAscii is an acceptable value, we would do nothing. However, if
KeyAscii is not acceptable, we would set KeyAscii equal to zero and
exit the procedure. Doing this has the same result of not pressing a key
at all. ASCII values for all keys are available via the on-line help in
Visual Basic. And some keys are also defined by symbolic constants.
Where possible, we will use symbolic constants; else, we will use the
ASCII values.
- As an example, say we have a text box (named txtExample)
and we only want to be able to enter upper case letters (ASCII codes
65 through 90, or, correspondingly, symbolic constants vbKeyA
through vbKeyZ). The key press procedure would look like
(the Beep causes an audible tone if an incorrect key is pressed):
Sub txtExample_KeyPress(KeyAscii as Integer)
If KeyAscii >= vbKeyA And KeyAscii <= vbKeyZ Then
Else
End If
End Sub
- In key trapping, it's advisable to always allow the backspace key
(ASCII code 8; symbolic constant vbKeyBack) to pass through the
key press event. Else, you will not be able to edit the text box properly.
Counter Hit
This Homepage is special brought to you by CK Tan