маска ввода есть в VB6?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

маска ввода есть в VB6?

Сообщение АндрейБ » 15.02.2012 (Ср) 17:19

Скажите, можно установить маску ввода для элемента TEXT в форме VB (на в формах акцессах)?
Например что бы вводилась дата, телефон, индекс по определенной маске маске?
Кто ищет, тот всегда найдет ...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: маска ввода есть в VB6?

Сообщение Хакер » 15.02.2012 (Ср) 17:54

Есть такой контрол.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: маска ввода есть в VB6?

Сообщение ger_kar » 15.02.2012 (Ср) 21:34

Так форма VB или Access? И контролы соответсвенно тоже? Может у тебя там слово как пропущено?
Если делать все в Access, то там у TextBox'a есть соответствующее свойство.
Бороться и искать, найти и перепрятать

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: маска ввода есть в VB6?

Сообщение АндрейБ » 16.02.2012 (Чт) 8:26

пишу машинально, поэтому иногда страдает написание мыслей.
Естественно в VB6 (просто до этого я разрабатывал приложения в Акцессе и там в формах элемент TEXT имел маску ввода
- это очень помогало для стандартизации записей).
Такое есть в VB6?
Кто ищет, тот всегда найдет ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: маска ввода есть в VB6?

Сообщение Antonariy » 16.02.2012 (Чт) 8:40

Да есть же, есть.

Неужели так сложно потратить минут 15 и посмотреть, какие контролы вообще есть в системе? Их же не так много как библиотек. Или вам вообще не интересно?

Кто ищет, тот всегда найдет ...
А кто-то вообще не ищет.
Лучший способ понять что-то самому — объяснить это другому.

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: маска ввода есть в VB6?

Сообщение АндрейБ » 16.02.2012 (Чт) 11:18

Отличный ответ Antonariy.
Я спросил конкретно по контролу TEXT. На форуме я не нашел ничего применимого к VB6.
Если сложно ответить, то я сам отвечу всем начинающим - друзья надо добавить компонент MaskEdBox к вашему проекту.
Этот контрол позволяет вводит данные по маске.
Кто ищет, тот всегда найдет ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: маска ввода есть в VB6?

Сообщение Antonariy » 16.02.2012 (Чт) 21:15

Я спросил конкретно по контролу TEXT.
Во-первых, не контролу, а "элементу", во-вторых, нет такого контрола, есть TextBox. Вот и угадывай, что там конкретика, а что фантазия.
Лучший способ понять что-то самому — объяснить это другому.

Samovar
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 111
Зарегистрирован: 23.05.2004 (Вс) 8:13

Re: маска ввода есть в VB6?

Сообщение Samovar » 02.03.2012 (Пт) 1:49

А как настроить MaskEdBox чтобы вводить стоимость? :oops:

Скажем ####.##

Чтобы можно было вводить 0.01; 3.14; 5.1; 1234.56...
Напр. чтобы после ввода 3 и нажатия точьки сразу можно было бы вводить 14.
И чтобы MaskEdBox допускал вводить знак "-" перед числом.
И не допукал ввода других символов, напр. букв.

Что для этого нужно прописать в свойстве "Mask"?
Ученье - свет, неученых - тьма.

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Re: маска ввода есть в VB6?

Сообщение АндрейБ » 02.03.2012 (Пт) 11:43

Я думаю, просто маской это не решить.
Надо перехватывать вводимые символы и сохранять введенный текст при каждом новом вводе символа.
При первом нажатие значаение может быть либо цифра либо -. Если вводиться либой другой символ его удалять и обнулять значение поля.
После первого символа идет ввод только цифр либо разделителя, который вы примете для себя (,.). в противном если введено что-то иное, подставляем поле до ввода последнего символа.
После ввода разделителя принимает только цифры, иначе подставляем поле до ввода последнего символа.
Кто ищет, тот всегда найдет ...

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 02.03.2012 (Пт) 20:47

АндрейБ писал(а):При первом нажатие значаение может быть либо цифра либо -. Если вводиться либой другой символ его удалять и обнулять значение поля.
После первого символа идет ввод только цифр либо разделителя, который вы примете для себя (,.). в противном если введено что-то иное, подставляем поле до ввода последнего символа.
После ввода разделителя принимает только цифры, иначе подставляем поле до ввода последнего символа.

Так нельзя. Во-первых, существует вставка из буфера, которая таким кодом не проверяется. А во-вторых, кто сказал, что символы будут вводиться подряд? Например, нажму 5, потом стрелку влево и минус. Нельзя? А ещё лучше, напишу 1234567, потом щелчком мыши перемещю курсор и продолжу писать.
Если уж есть желание устроить подобную проверку, то надо просматривать содержимое и как-то реагировать на некорректные данные. Лучше какой-нибудь меткой (только не MsgBox или что-то в этом духе! просто текст или фон), т. к. я могу написать 123.456, и попытаться исправить на 1234.56 сначала написав вторую точку, а потом убрав первую.

Samovar писал(а):Чтобы можно было вводить 0.01; 3.14; 5.1; 1234.56...Напр. чтобы после ввода 3 и нажатия точьки сразу можно было бы вводить 14.И чтобы MaskEdBox допускал вводить знак "-" перед числом.

Я что-то не понял... Есть ограниченный набор чисел? Или ты хочешь реализовать автодополнение?

По поводу автодополнения. Лично я для таких целей предпочитаю выпадающий список. При выполнении команды в него помещается введённое значение, которое потом можно выбрать. Делал так в программах, где возникает небольшое количество частоиспользуемых значений и их удобно выбирать мышью. При желании можно сделать и автодополнение, только в таком случае надо следить за положением курсора - он должен стоять в последней позиции, если это не так, то уничтожение текста после курсора может навредить, а перемещение его в конец просто неестественно и неудобно.

Samovar
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 111
Зарегистрирован: 23.05.2004 (Вс) 8:13

Re: маска ввода есть в VB6?

Сообщение Samovar » 02.03.2012 (Пт) 21:24

Да нет - как раз то, что Вы разписали в первом абзаце. Только если делать так, для чего вообще MEB? Тогда уж через TextBox и в случае LostFocus форматировать введеное.
Ученье - свет, неученых - тьма.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 02.03.2012 (Пт) 22:15

Samovar писал(а):Да нет - как раз то, что Вы разписали в первом абзаце. Только если делать так, для чего вообще MEB? Тогда уж через TextBox и в случае LostFocus форматировать введеное.

Про обычный TextBox согласен. А вот про LostFocus - а зачем? На мой взгляд, лучше либо на TextChanged (например, поменять фон с белого на розовый), либо на нажатие OK (тут уже MsgBox).

Кстати, интересный вопрос... А можно ли как-то перейти на другой элемент так, что LostFocus не произойдёт? Например с парой MouseDown & MouseUp можно между ними нажать Alt+Tab :D

Samovar
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 111
Зарегистрирован: 23.05.2004 (Вс) 8:13

Re: маска ввода есть в VB6?

Сообщение Samovar » 03.03.2012 (Сб) 13:01

Про LostFocus я имел ввиду чтобы отформатировать результат, наподобии того что делает свойство "Format" в MEB.
Напр. разделить порядки интервалом, округлить до второй цифры после десятичной точки, подкрасить в красный если сумма меньше нуля. Если вводим дату, то нужно проверять все цифры и т.д.

Про переключение - это как? Если нажать Alt+Tab управление перейдет к другому приложению. При переключении обратно активируется последнее окно и поледний контроль. Или я что-то упустил?
Ученье - свет, неученых - тьма.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 03.03.2012 (Сб) 20:22

Samovar писал(а):Про LostFocus я имел ввиду чтобы отформатировать результат, наподобии того что делает свойство "Format" в MEB.
Напр. разделить порядки интервалом, округлить до второй цифры после десятичной точки, подкрасить в красный если сумма меньше нуля. Если вводим дату, то нужно проверять все цифры и т.д.

Я бы проверки поставил на TextChanged. А форматирование действительно логичнее на LostFocus.

Samovar писал(а):Про переключение - это как? Если нажать Alt+Tab управление перейдет к другому приложению. При переключении обратно активируется последнее окно и поледний контроль. Или я что-то упустил?

Alt+Tab относилось к событиям мыши. Если нажать кнопку мыши, удеживая её нажать Alt+Tab, после чего отпустить, то событие MouseUp не возникнет :D Вот и стало интересно, можно ли каким-нибудь хитрым способом (возможно, программным) обойти LostFocus :)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList