Страницы: 1
RSS
Проверка ввода данных для многих TextBox
 
Доброго времени суток, господа и дамы!
Я к Вам снова за помощью.
Сложилась следующая ситуация: имеем на форме несколько текстбоксов. В этих текстбоксах через код
Код
Private Sub TextBox1_Change()
    If TextBox1.Text Like "*[!0-9]*" Then TextBox1.Text = TextBox1.Tag Else TextBox1.Tag = TextBox1.Text
    End Sub
разрешаю ввод только цифр. Но если на форме овердофига текстбоксов, то количество процедур многократно возрастает.
Так вот, есть ли способ сделать что-то наподобие цикла, но для процедуры в целом (включая ее имя) или идея бессмысленна?  
 
Без примера сложно что-л. советовать, кроме общих вещей:
1. Сделайте функцию и ее вписывайте в событие TextBox1_Change.
2. Замените TextBox1 на ActiveControl.
3. Воспользуйтесь элементом формы "Группа".
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Ну если
Цитата
trovial написал:
на форме овердофига текстбоксов
то нужно через класс делать обработку события одну для всех и обрабатывать одной процедурой с учетом того, что вызвало обработку.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
то нужно через класс делать обработку
Золотые слова  ;)  В разы , а то и десятки раз сокращает код!!! :D
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
trovial написал:
есть ли способ сделать что-то наподобие цикла
Работа с модулями классов
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,  я тоже думал через функцию или класс.
попробовал сделать согласно инструкции, но где то ошибка.
 
Это что такое вообще? И в одну строку там, где не надо и какое-то новое свойство Name.Text...
Код
If oTxtBx.Name.Text Like "*[!0-9]*" Then oTxtBx.Name.Text = oTxtBx.Name.Tag Else oTxtBx.Name.Tag = oTxtBx.Name.Text
    End If
Вам бы хоть синтаксис языка для начала подучить...Правильно так:
Код
Private Sub oTxtBx_Change()
    If oTxtBx.Text Like "*[!0-9]*" Then
        oTxtBx.Text = oTxtBx.Tag
    Else
        oTxtBx.Tag = oTxtBx.Text
    End If
End Sub
Далее
Код
For i = 301 To 322
    Set aoTxtBxes(i).oTxtBx = Me.Controls("TextBox" & i)
Next i
а у Вас точно массив имеет нижнюю границу 301? Следовательно
Код
For i = 1 To 22
    Set aoTxtBxes(i).oTxtBx = Me.Controls("TextBox" & i + 300)
Next i
и все будет работать. Делать по инструкции мало - надо еще и вдуматься в смысл происходящего :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Пример.
"Все гениальное просто, а все простое гениально!!!"
 
Дмитрий(The_Prist) Щербаков, да, все работает, спасибо Вам.
Ну я только учусь время от времени. По профессии не программист, но порой приходится делать вещи, которые облегчают жизнь.
И, кстати, вопрос такой: сделать класс на процедуру After Update тоже получится, или через функцию делать.
 
Вопрос не связан с темой
Страницы: 1
Наверх