ПОМОГИТЕ! Как обеспечить ввод в текстовое окно только чисел?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
wertill@
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 07.11.2005 (Пн) 23:18

ПОМОГИТЕ! Как обеспечить ввод в текстовое окно только чисел?

Сообщение wertill@ » 07.11.2005 (Пн) 23:24

Подскажите пожалуйста как мне обеспечить возможность введения в текстовое окно только числовой информации (и знака разделителя - "точки"). Остальные же значения не должны вводиться. У меня есть некоторые идеи, но я не знаю чем закончить:
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then...

ЗАРАНЕЕ БЛАГОДАРЕН!!!

Boss IT
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 01.07.2005 (Пт) 21:23
Откуда: Челябинск city

Сообщение Boss IT » 07.11.2005 (Пн) 23:27

Код: Выделить всё
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Chr$(KeyAscii) Like "#" = False Then KeyAscii = 0
End Sub


+ http://bbs.vbstreets.ru/viewtopic.php?t=20662

Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Сообщение Rodos » 07.11.2005 (Пн) 23:37

Код: Выделить всё
Private Sub Text1_Change()
   If Not IsNumeric(Text1.Text) Then 'написать что надо
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.11.2005 (Пн) 23:42

Rodos
Худший способ.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Rodos
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 10.10.2005 (Пн) 22:07
Откуда: Москва

Сообщение Rodos » 08.11.2005 (Вт) 15:41

GSerg Худший способ - это тоже способ. :)

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 08.11.2005 (Вт) 17:55

Ещё один очень плохой способ...
Контрол. Свойство IgnoreThisSymbols.
Вложения
ua_super_textbox.rar
Контрол
(58.32 Кб) Скачиваний: 42
Salus populi suprema lex

KVG
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 22.04.2005 (Пт) 5:57

Сообщение KVG » 10.11.2005 (Чт) 7:10

Код: Выделить всё
Private Sub txtMy_KeyPress(ByVal KeyAscii As Integer)
    If Chr$(KeyAscii) Like "#" = False Then
        If KeyAscii = 44 Or KeyAscii = 46 Then
            If InStr(txtMy.Value, ".") > 0 Or InStr(txtMy.Value, ",") > 0 Then _
                KeyAscii = False ' чтоб не ввели несколько "." или ","
        Else
            KeyAscii = False
        End If
    End If
End Sub

Хорошо бы в "hkey_current_user\Control Panel\International" с помощью RegQueryValueExA (из ADVAPI32.DLL) взять десятичный разделитель ("sDecimal")

Vladimir!
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 19.09.2005 (Пн) 21:47
Откуда: Пермь

Сообщение Vladimir! » 10.11.2005 (Чт) 13:15

andreymp
Ошибочка вышла. Меняешь не запятую на точку, а наоборот.
В твоем примере:
If KeyAscii = 46 Then
KeyAscii = 44
End If[/syntax]

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 11.11.2005 (Пт) 17:15

Кто сможет хуже?


if (chr$(Keyascii) <> "0") and ... and (chr$(Keyascii) <> "9") and (chr$(Keyascii) <> ".") then

msgbox "..."
keyascii = 0
end if
На это не смотрите! Это не подпись!!!!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 36

    TopList