Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разрешение ввода только определенных символов... 
:(
    Опции темы
kif
Дата 5.12.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Так вот, в чем проблема. Как запретить определенные символы для ввода в ТексБокс я знаю. А вот как разрешить ТОЛЬКО определенные символы? К примеру только цифры или только буквы? А еще лучше было бы найти какой нить модуль чтоб в 

Private Sub *_KeyPress(KeyAscii As Integer)
*****
*****
End Sub

Писать вызов процедуры типа "OkNum" и она разрешает только цифры.... Объясните как это сделать иль еще лучше напишите модуль этот. Я сам не очень то и знаю визуал басик...
PM MAIL   Вверх
Kirill89
Дата 5.12.2006, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Код

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If Not (IsNumeric(Text1.Text)) Then
        Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
        MsgBox "Нельзя вводить текст!"
End If
End Sub

Так можно ограничить ввод всех букв.


--------------------
PM MAIL WWW   Вверх
BorisVorontsov
Дата 5.12.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



SetWindowLong ES_NUMBER
Только цифры.

Это сообщение отредактировал(а) BorisVorontsov - 7.12.2006, 17:15


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
kif
Дата 5.12.2006, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Хм... 
BorisVorontsov, на это пишет кудаб ни вставил ошибку.

Kirill89, эт конечно норм но можно и обойти! Если перед цифрой поставишь букву то останеЦа в текстбоксе буква!
PM MAIL   Вверх
Kirill89
Дата 5.12.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Цитата(kif @ 5.12.2006,  23:34)
Kirill89, эт конечно норм но можно и обойти! Если перед цифрой поставишь букву то останеЦа в текстбоксе буква!

Правильно, я только идею подал. Вот-работает, но ты мог бы и сам догадаться.
Код

Dim a As String
Private Sub t_KeyUp(KeyCode As Integer, Shift As Integer)
If Not (t.Text = "") Then
    If IsNumeric(t.Text) Then
        a = t.Text
    Else
        MsgBox "Ne vvodit bykvi!!!", vbCritical
        t.Text = a
    End If
End If
End Sub



--------------------
PM MAIL WWW   Вверх
BorisVorontsov
Дата 6.12.2006, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(kif @  5.12.2006,  23:34 Найти цитируемый пост)
BorisVorontsov, на это пишет кудаб ни вставил ошибку.


OMG.
Конечно пишет. Потому что SetWindowLong.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
mihanik
Дата 6.12.2006, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Пользуйся!!!

Список разрешённых символов указывать в этой строке

Код

    If InStr("0123456789." + vbBack, S) = 0 Then


А вот и сам код...

Код

Private Sub Text1_KeyPress(KeyAscii As Integer)
Static DotIsSet As Boolean
Dim S As String
    
    If Text1.Text = "" Then DotIsSet = False
    
    S = Chr(KeyAscii)
    
    If InStr("0123456789." + vbBack, S) = 0 Then
        Beep
        KeyAscii = 0
        Exit Sub
    End If
    
    Select Case S
        Case "."
                If DotIsSet Then
                    KeyAscii = 0
                Else
                    DotIsSet = True
                End If
        Case vbBack
                If Len(Text1.Text) <> 0 Then If Mid(Text1.Text, Len(Text1.Text), 1) = "." Then DotIsSet = False
    End Select

End Sub


Добавлено @ 07:29 
Это пример "для ввода только чисел".

Он очень просто переделывается и для твоих целей...

Добавлено @ 07:31 
Весь модуль Select Case  можешь удалить.
Он нужен для слежения за правильностью ввода ЧИСЛА.


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
kif
Дата 7.12.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



тьфу блин. всем биг сенкью.)
PM MAIL   Вверх
mihanik
Дата 7.12.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Цитата(kif @  7.12.2006,  12:19 Найти цитируемый пост)
тьфу блин

 smile 



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
kif
Дата 8.12.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Такс... А как приспособить это для большой группе ТекстБоксов? Не писать же в каждом условие.) И как в него вписать все Change? Если только через таймер...?
PM MAIL   Вверх
Kirill89
Дата 9.12.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Цитата(kif @ 8.12.2006,  23:56)
Такс... А как приспособить это для большой группе ТекстБоксов? Не писать же в каждом условие.) И как в него вписать все Change? Если только через таймер...?

через for и массив эллементов управления.


--------------------
PM MAIL WWW   Вверх
kif
Дата 9.12.2006, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



аа... ну в принципе все понятно. код короч получится все равно большеват)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.