powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пожалуйста помогите новичку с проверкой данных в TextBox
12 сообщений из 12, страница 1 из 1
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34102508
SergioIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поскажите как установить контроль данных для вводимой информации. У меня нет Help MSDN для 6.0 VisualBasic. В частности, в TextBox мне нужно принять целое в диапазоне 1..99. Каков общий подход к решению таких проблем контроля данных. В книге дебильный пример с проверкой стандартного формата Дата.
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34102616
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверка когда должна идти: во время потери фокуса контрола? или во время нажатия какой то кнопки или закрытия формы?
есть специальное событие Validate
например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Private Sub Command1_Click()
    If Trim(Text1.Text) = "" Then
        Text1.SetFocus
        Text1_GotFocus
        MsgBox "Укажите значение!", vbInformation
        Exit Sub
    ElseIf Not IsNumeric(Text1.Text) Then
        Text1.SetFocus
        Text1_GotFocus
        MsgBox "Укажите числовое значение!", vbInformation
        Exit Sub
    ElseIf CLng(Text1.Text) <> Val(Text1.Text) Then
        Text1.SetFocus
        Text1_GotFocus
        MsgBox "Укажите целочисленное значение!", vbInformation
        Exit Sub
    ElseIf (CLng(Text1.Text) <  1 ) Or (CLng(Text1.Text) >  99 ) Then
        Text1.SetFocus
        Text1_GotFocus
        MsgBox "Укажите значение от 1 до 100!", vbInformation
        Exit Sub
    End If
    MsgBox Text1.Text
End Sub

Private Sub Text1_GotFocus()
    Text1.SelStart =  0 
    Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
    If Trim(Text1.Text) = "" Then
        Text1_GotFocus
        MsgBox "Укажите значение!", vbInformation
        Cancel = True
        Exit Sub
    ElseIf Not IsNumeric(Text1.Text) Then
        Text1_GotFocus
        MsgBox "Укажите числовое значение!", vbInformation
        Cancel = True
        Exit Sub
    ElseIf CLng(Text1.Text) <> Val(Text1.Text) Then
        Text1_GotFocus
        MsgBox "Укажите целочисленное значение!", vbInformation
        Cancel = True
        Exit Sub
    ElseIf (CLng(Text1.Text) <  1 ) Or (CLng(Text1.Text) >  99 ) Then
        Text1_GotFocus
        MsgBox "Укажите значение от 1 до 100!", vbInformation
        Cancel = True
        Exit Sub
    End If
End Sub
Если на Validate, то сразу при потере фокуса, т.е. когда переключаетесь к другому контролу, идет проверка, можно на определенное событие, как кликанье на кнопку Command1_Click и все такое, а с датой то же самое тока заместо IsNumeric, поставьте IsDate и т.д. Обычно я так проверяю корректность вводимых данных
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34102737
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ввода только цифр я бы написал примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Text1_KeyPress(KeyAscii As Integer)
  If (KeyAscii >  47  And KeyAscii <  58 ) Or (KeyAscii =  8  Or KeyAscii =  13 ) Then
  Else
      MsgBox "В этом поле ожидается ввод цифр!", vbOKOnly, "Предупреждение"
      KeyAscii =  0 
  End If
End Sub
Останется сделать проверку/ограничение на ввод только не более двух цифр и проверку буфера на правильность при Copy/Paste.
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34104009
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а чтобы не больще 2х знаков, для этого есть MaxLenght=2
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34106089
SergioIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какое счастье, что я сюда попал. Огромное Вам спасибо, господа! В этом вопросе разобрался. До чего же чудо - этот Вижуал Бас 6.0! Три дня знаком, а сколько впечатлений.

Я прикладник - мною написан движок (в спец среде) для решения специальных задач механики. Но время требует изящного интерфейса к этому движку. Есть инструмент для его привязки к коду на Виж.Бас или С++. УЖАС, два месяца я осваивал самые АЗЫ этого творения (С++) и окончательно пришел к мнению, что сие надо номинировать как самое НЕЛЕПОЕ изобретение человечества в 20 веке. Структурированность и читабельность - НУЛЕВАЯ. Профи подсказали, что мобильность в изменении кода в готовом изделии - такая же!!!!

С БАС я угодал - это точно! С контролем формата у меня еще будут вопросы, прошу Вас будтье снисходительны к моему ламерству и не бросайте совсем...

НЕТ версия не подходит, к тому же она более жестка к типам, нет свободы (As Any, получение адресов указателей во внешних библиотеках и проч.). Правильно ли понимаю жизнь?
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34106174
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
" НЕТ версия не подходит, к тому же она более жестка к типам, нет свободы "

Здесь вы жизнь, видимо, понимаете не совсем правильно. .Net никак не более жестка к типам. Я бы сказал, что свободы гораздо больше в .Net, для того он/она и делался. Там многое на опциях, включая и типы, впрочем, как и в классическом VB.
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34109191
SergioIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что интерфейс между моей математикой и внешней средой официально заявлен для 6.0. Если б я был опытным Басером, возможно попытался бы переписать этот интерфейс (набор функций, деклараций и ссылки на библиотеки). Это - БАС файл. Но в документации указано, что для НЕТ АПИ не работает главным образом из-за несоответствия типов Лонг 32 - 64. Цитирую: To use the VB OpenMaple code and examples shown in these help pages you must first add the extern/include/maple.bas file to your project. See your Maple installation for the file.
The maple.bas module is designed to work with Visual Basic 6.0. It will not work with VB7 (or VB.NET), primarily because the Long datatype is 32-bits in VB 6, and 64-bits in VB 7. Long is used as the Maple Object data-type (which is a 32-bit pointer).

Есть ли выход? Надо работать в 6.0. Может встречалась уже такая проблема?
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34109321
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergioIT,

Привет, не хочу показаться грубым, но то, что вы процитировали, выглядит как bullshit :0))

Первый раз слышу, что API не работают в .NET из-за несоответствия типа Long!
Делайте boxing, CType, переводите в integer, который как раз 32 битовый в .NET.

Если у вас есть еще вопрос с проверкой данных, может сможем помочь! Не очень был ясен вопрос, есть ли выход. Из чего?
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34109343
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergioIT,

Я думаю, если вы измените декларации ваших API с long на integer в VB.NET, это может снять битовую проблему.

VladConn
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34109614
SergioIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для VladConn. Простите пожалуйста, я имел ввиду АПИ OpenMaple (bas file), который связывает Maple and VB 6.0. Ну как бы связующий интерфейс - так они в документации говорят.
Простите пожалуйста также мне мою некомпетентность в БАС. Мне не хватает навыков для переработки этого файла maple.bas. Я пытаюсь разобраться, тем более что НЕТ интиллегентно подсказывает в чем проблема при обновлении с 6.0 до НЕТ комментариями. Но ведь мне наверное, нужно сначала отследить передаваемые типы этим файлом как следует, а потом внести изменения. Работа очень тонкая для меня.
Был бы он поменьше, я бы попросил помочь.
Мне очень нравится БАС, оторваться невозможно. Прекрасно подключается Мейпл к нему, работает чудо. Код - торжество ясности, логики и разума.
Мне уже удалось и собственный контрол написать как динамический массив элементов управления TextBox.

Насколько я понял нужно =Long datatype is 32-bits in VB 6= заменить на Интегер, который в НЕТе 32 для начала
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34109804
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, но если вам слишком трудно переводить все в .NET, то оставайтесь лучше в VB6 пока что.
...
Рейтинг: 0 / 0
Пожалуйста помогите новичку с проверкой данных в TextBox
    #34109850
SergioIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я новый топик предложил по этой теме.
Не так много там ошибок. Посмотрите пожалуйста, еще парочку предупреждений дает.
Очень хотелось бы выяснить принципиальную возможность такого обновления. Если работает, то перспективы станут отчетливо ясны. У меня серьезное перспективное Maple приложение. Поэтому я пытаюсь создать очень впечатляющий интерфейс.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пожалуйста помогите новичку с проверкой данных в TextBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]