Страница: 1 |
Страница: 1 |
Вопрос: Decimal
Добавлено: 20.10.04 22:32
Автор вопроса: Diss
Как надёжно запретить ввод второго десятичного разделителя
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
shareman
Вопросов: 11
Ответов: 37
Профиль | | #1
Добавлено: 20.10.04 23:03
Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr(Text1.Text , "." <> 0 Then
KeyAscii = 0
Exit Sub
End If
End Sub
Номер ответа: 2
Автор ответа:
Diss
Вопросов: 3
Ответов: 4
Профиль | | #2
Добавлено: 21.10.04 00:04
Спасибо, но к сожалению - ваша версия запрещает ввод любых символов после первой точки, а не только вторую точку!
Я пробую делать так:
Private Sub Txt1_KeyPress(KeyAscii As Integer)
Static DecimalPointUsed As Integer
If Txt1.Text = "" Then DecimalPointUsed = 0
Select Case KeyAscii
Case Asc("0" To Asc("9"
Case Asc(".", Asc(","
KeyAscii = Asc("."
If DecimalPointUsed Then
KeyAscii = 0
Beep
MsgBox "второй десятичный разделитель!", vbCritical, "Внимание!"
Else
 ecimalPointUsed = True
End If
Case Else
KeyAscii = 0
End Select
End Sub
Если в текстовом поле имеется выделенный текст с десятичным разделителем, который удаляется непосредственным вводом другого числа - тогда
ввести точку нельзя не взирая на отсутствие таковой в поле!
Номер ответа: 3
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #3
Добавлено: 21.10.04 14:48
а так...
If InStr(Text1.Text, "," <> 0 And KeyAscii = 44 Then KeyAscii = 0
End Sub
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 21.10.04 15:39
А как вставку из буфера обмена при этом проверять на соответствие того, что нам надо? Вообще, у кого есть комплексное решение проблемы в исходниках? можно, например строку начать вводить с запятой, можно поставить знак минус не в начале строки, можно начать вводить, предварительно выделив часть строки. Так много всего, а хочется, чтобы ввод чисел был с их форматированием и разрешенный по жесткому правилу на этапе ввода. Т.е. мне хочется свести к нулю шансы юзера ввести кривую циферку... Тема вроде та же, новый топик не завежу, но оччень хочется поставить на этом вопросе для себя точку - разобраться до конца.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 21.10.04 18:56
Непроще посчитать количество этих символов разделения, если их больше положенного сказать юзеру что ты дурак, бери и исправляй! )))
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 21.10.04 19:26
Это как в анекдоте про человека, который хотел стать писатерем, а стал в MS редактором сообщений об ошибках ДИКО ИЗВИНЯЮСЬ ЗА OFFTOP (ну, захотелось...)
Номер ответа: 7
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #7
Добавлено: 21.10.04 19:33
> писатерем
HACKER, а мы и так знаем с тобой, что юзер дурак - пусть исправляется Мне надо хороший ЖЕСТКИЙ контроль над вводом. Видел на сайте какой-то откомпиленный контрол, только мне откомпиленный на Xor не нужен
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 21.10.04 21:35
та утож
Номер ответа: 9
Автор ответа:
shareman
Вопросов: 11
Ответов: 37
Профиль | | #9
Добавлено: 23.10.04 22:18
Поиграйтесь с оператором Like.
Что-то вроде:
If Not Text1.Text Like "#.#" Then
Debug.Print "False"
Else
Debug.Print "True"
End If
End Sub
Номер ответа: 10
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #10
Добавлено: 25.10.04 14:12
Спасибо, shareman, похоже это то, что надо!