Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
            ;DecimalPointUsed = True
        End If
    
    Case Else
            KeyAscii = 0
    End Select
End Sub

Если в текстовом поле имеется выделенный текст с десятичным разделителем, который удаляется непосредственным вводом другого числа - тогда
ввести точку нельзя не взирая на отсутствие таковой в поле!

Ответить

Номер ответа: 3
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #3
Добавлено: 21.10.04 14:48
а так...
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If InStr(Text1.Text, ",";) <> 0 And KeyAscii = 44 Then KeyAscii = 0
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 21.10.04 19:26
Это как в анекдоте про человека, который хотел стать писатерем, а стал в MS редактором сообщений об ошибках :) ДИКО ИЗВИНЯЮСЬ ЗА OFFTOP (ну, захотелось...)

Ответить

Номер ответа: 7
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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.
Что-то вроде:
Private Sub Form_Load()
    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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #10
Добавлено: 25.10.04 14:12
Спасибо, shareman, похоже это то, что надо!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам