Кто подскажет, есть-ли что нибудь такое в VB6? Должно быть, по идее, но не могу найти или не то ищу (не знаю, что искать). Подскажите, братцы.

точно естьSeaman писал(а):Нужно ограничить вводимые через TextBox значки в VB6 аппликации шестнадцатиричными значениями (0 ... F). Как можно организовать проверку на "вшивость" в данном случае, чтобы выдать пользователю ошибку в MsgBox в случае, если он ввел что-то не дозволенное?
Кто подскажет, есть-ли что нибудь такое в VB6? Должно быть, по идее, но не могу найти или не то ищу (не знаю, что искать). Подскажите, братцы.
Код: Выделить всё
Dim strHexa(15) As String
Private Sub Command1_Click()
Dim strText As String
Dim intChar As Integer
Dim intHex As Integer
Dim intError As Integer
strText = Text1.Text & Text2.Text
For intChar = 1 To 8 Step 1
For intHex = 0 To 15 Step 1
If Mid(strText, intChar, 1) = strHexa(intHex) Then
Exit For
End If
Next intHex
If intHex = 16 Then
intError = 1
GoTo FormError
End If
Next intChar
...
FormError:
If intError = 1 Then
MsgBox "Only Hexadecimals are allowed here!", vbOKOnly + vbExclamation, "Error"
Text1.Text = ""
Text2.Text = ""
strText = ""
Text1.SetFocus
End If
End Sub
KeyUp event надо ловить и чар его обрабатывать....Seaman писал(а):Пока не нашел, сделал так:Код: Выделить всё
Dim strHexa(15) As String Private Sub Command1_Click() Dim strText As String Dim intChar As Integer Dim intHex As Integer Dim intError As Integer strText = Text1.Text & Text2.Text For intChar = 1 To 8 Step 1 For intHex = 0 To 15 Step 1 If Mid(strText, intChar, 1) = strHexa(intHex) Then Exit For End If Next intHex If intHex = 16 Then intError = 1 GoTo FormError End If Next intChar ... FormError: If intError = 1 Then MsgBox "Only Hexadecimals are allowed here!", vbOKOnly + vbExclamation, "Error" Text1.Text = "" Text2.Text = "" strText = "" Text1.SetFocus End If End Sub
Не особо сложно-ли, может что по-проще есть?
А ловить "кей", думаю будет тоже самое.
Вот смотри: ты сначала позволил юзеру ввести все что он хочет. Он радостный такой, особливо на фоне того что есть подпись вводить токма шешнадцатиричные символы, а он такой моодца смог ввести что захотел.. потом он кликает.. читает твой мессаджбокс, нажимает на нем пидаль ок, опять идет вводить/править текстSeaman писал(а):Пока не нашел, сделал так:Код: Выделить всё
Dim strHexa(15) As String Private Sub Command1_Click() Dim strText As String Dim intChar As Integer Dim intHex As Integer Dim intError As Integer strText = Text1.Text & Text2.Text For intChar = 1 To 8 Step 1 For intHex = 0 To 15 Step 1 If Mid(strText, intChar, 1) = strHexa(intHex) Then Exit For End If Next intHex If intHex = 16 Then intError = 1 GoTo FormError End If Next intChar ...
Не особо сложно-ли, может что по-проще есть?
А ловить "кей", думаю будет тоже самое.
Код: Выделить всё
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim intHex As Integer
Dim intError As Integer
For intHex = 0 To 21 Step 1
If Mid(Text1.Text, Len(Text1.Text), 1) = strHexa(intHex) Then
Exit For
End If
Next intHex
If intHex = 22 Then
intError = 1
GoTo FormError
End If
If Len(Text1.Text) = 4 Then
Text2.SetFocus
End If
FormError:
If intError = 1 Then
MsgBox "Only Hexadecimals are allowed here!", vbOKOnly + vbExclamation, "Error"
Text1.Text = Replace(Text1.Text, Mid(Text1.Text, Len(Text1.Text), 1), "")
End If
End Sub
Код: Выделить всё
Text1.SelStart = Len(Text1.Text)
Ну вот видишь? Если долго мучится, что-нибудь получится.Seaman писал(а):О.К. додумался:Код: Выделить всё
Text1.SelStart = Len(Text1.Text)
Какой я вумный! Ну прям як вутка!