Проерка данных при вводе в TextBox

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

Проерка данных при вводе в TextBox

Сообщение BIT » 28.10.2003 (Вт) 18:30

Для корректного ввода данных в TextBox использую процедуру TextBox_Change. Если данные не удовлетворяют неким условиям выполняю TextBox.Text=старые данные, при этом происходит вызов процедуры TextBox_Change (что в общем то и не надо т.к. старые данные - правильные данные). Чтобы этого избежать использую переменную Dostup
Код: Выделить всё
Dim Dostup As Boolean
Private Sub UserForm_Initialize()
  Dostup = True
  ....
End Sub
Private Sub TextBox_Change()
  If Not Dostup Then Exit Sub
  if Form3.TextBox1.Text ='УСЛОВИЕ' then
    .....
  else
    Dostup = False
    Form3.TextBox1.Text ='СТАРЫЕ ДАННЫЕ'
    Dostup = True
  end if
End Sub


Все работает, но мне кажется есть другой (ПРАВИЛЬНЫЙ) метод решения данной задачи.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 28.10.2003 (Вт) 20:08

Нормальное решение. Только не забывай сбрасывать флаг
Код: Выделить всё
If Not Dostup Then Dostup = True: Exit Sub

Есть ещё вариант ставить обработку в KeyPress, но там тоже есть проблемы, т.к. текст ещё не изменён. Можно, конечно, самому его изменить. См. http://bbs.vbstreets.ru/viewtopic.php?t=3657

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 13.11.2003 (Чт) 1:18

Немножко о проверке ... (так, чтобы 100 сообщений было)
При ошибке условия фокус туда перекидывай и выделяй ТЕКСТБОКС-овский текст ...

Это ценится юзверями :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 13.11.2003 (Чт) 7:53

Здесь лучше всего испольщовать _Validate .

Private Sub Text1_Validate(Cancel As Boolean)
If Text1.Text = "" Then Cancel = True
End Sub

Здесь ты не сможешь убрать фокус с текстбокса пока не заполнишь поле.
Изображение

Unknown_Error
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 14.10.2003 (Вт) 15:30

Сообщение Unknown_Error » 13.11.2003 (Чт) 13:28

][
А я так делаю на событие KeyDown

Private Sub txt_KeyDown( ........ )
txt.locked = IIF((KeyCode > 47 and KeyCode <58) or KeyCode = 8 .....,False,True)
End Sub


- Но тут надо учитывать, что цифры от 0-9 на доп клаве имеют разные коды чем на основной.

Delete - 46


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

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

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

    TopList