Контрол TextBox

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

Контрол TextBox

Сообщение david141 » 28.11.2007 (Ср) 22:46

Как в текстовое поле TextBox запретить ввод символов и разрешить ввод только букв и цифр?

Допустим копируем текст с символами (ЕСТЬ?) и встовляем в TextBox
а получаем ЕСТЬ без символов.
Заранее спасибо.

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

Сообщение Хакер » 29.11.2007 (Чт) 0:00

Множество символов является надмножеством для множества всех букв и множества всех цифр. Следовательно, формулировка "запретить ввод символов и разрешить ввод только букв и цифр" не имеет смысла.

Возможно, имелись ввиду спецсимволы. Не стоит путать слова.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 29.11.2007 (Чт) 10:03

Нет. Возможно, имелись ввиду знаки препинания.

На Text_Change перебирай строку посимвольно и удаляй ненужные символы.
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;

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

Сообщение Хакер » 29.11.2007 (Чт) 12:47

Не забывая сохранять SelStart и SelLength.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

david141
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 12.04.2007 (Чт) 14:02

Сообщение david141 » 30.11.2007 (Пт) 22:17

Мне нужно вставить текст из буфера в TextBox
при этом чтобы обрезались лишние(ненужные) символы.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 30.11.2007 (Пт) 22:21

Подпись проходит рефакторинг

david141
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 12.04.2007 (Чт) 14:02

Сообщение david141 » 30.11.2007 (Пт) 23:47

По ходу ты не в курсе. Я вижу.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 01.12.2007 (Сб) 0:29

У каждой клавиши есть свой код. Если по такому принципу что написать, опять же раскладка какая будет? Вопрос конечно интересный. Как например запретить только буквы и разрешить дробные цифры? Точку ставишь после цифры и уже ошибка ввода.

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 01.12.2007 (Сб) 1:31

Saturn.65
А что, нельзя например, если это находится в диалоговом окне, помечать тексбокс красной рамкой, а кнопку OK делать отключенной пока в текстбоксе опять не появятся нужные символы? Тогда, если тебе нужны ТОЛЬКО дробные цифры, ты можешь разрешить только цифры и точку, но если ввод не подходит, блокировать кнопку OK.
david141
Сам ты не в курсе. BV тебе написал всё как надо а Lumen перенаправил на правильное решение. Что не так?

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 01.12.2007 (Сб) 12:41

david141 писал(а):Мне нужно вставить текст из буфера в TextBox
при этом чтобы обрезались лишние(ненужные) символы.

Это если свою функцию написать. Есть же функция, удаляющаяя пробелы в тексте. Но чтоб кучу символов еще удалять... . Едва ли.
Если еще приспособить функцию поиска этих символов в словах, а потом форматировать.

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 01.12.2007 (Сб) 19:21

Но чтоб кучу символов еще удалять...

А что такое? :roll:

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 01.12.2007 (Сб) 19:38

Cytron писал(а):
Но чтоб кучу символов еще удалять...

А что такое? :roll:

Если нельзя знак вопроса, запятую и т.д. , то надо защиту и от введения *;&;%; и т.д. И вообще интересно для чего такая хитрая программа.

david141
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 12.04.2007 (Чт) 14:02

Сообщение david141 » 01.12.2007 (Сб) 21:32

Это просто качалка с tube.by она выдерает со страницы имя видео
но когда видео идёт с символами допустим (?\/*№#) не хочет качать
как слово без символа качает нормально.

John_AK
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 02.03.2005 (Ср) 16:53

Сообщение John_AK » 05.12.2007 (Ср) 15:54

isCharAlphaNumericA?

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 07.12.2007 (Пт) 10:29

Вот код, который запрещает вводить ненужные символы:
Код: Выделить всё
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim sTemplate As String
'Replace the '!@#$%^&*()_+=?' какие символы игнорировать
sTemplate = "!@#$%^&*()_+=?"
If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0
End Sub

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 07.12.2007 (Пт) 11:29

Saturn.65
Твой код не мешает скопировать эти ненужные символы скопировать из буфера обмена.
Подпись проходит рефакторинг

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 07.12.2007 (Пт) 16:55

Lumen писал(а):Saturn.65
Твой код не мешает скопировать эти ненужные символы скопировать из буфера обмена.

Это то да. Тут надо голову поломать. А если буфер обмена перекодировать сперва? У вас светлые головы, может что придумаете.
По крайней мере хоть какая то зацепка.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 07.12.2007 (Пт) 17:57

Дык а че там ломать-то? Ответ уже во втором посте дан.
Вот к примеру моя реализация (щас за 5 минут левой ногой состряпал):
Код: Выделить всё
Private Sub Text1_Change()
Dim selst As Long, selln As Long
With Text1
    selst = .SelStart
    selln = .SelLength
    .Text = Replace(.Text, "?", "")
    .Text = Replace(.Text, "!", "")
    'тут дальше можно сколько угодно замен делать ненужных символов на пустую строку
    .SelLength = selln
    .SelStart = selst
End With
End Sub
Подпись проходит рефакторинг

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 07.12.2007 (Пт) 22:16

Lumen
Сказать конечно нечего. Круто ты сообразил. А мы тут целую страницу накатали. Надо скопировать этот код к себе в кирпичи.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 08.12.2007 (Сб) 0:15

Да блин, то что я "сообразил", на самом деле было описано в третьем и четвертом посте из этого же топика. Нужно было всего лишь воплотить эти идеи в код. Собсно что я за 5 минут и сделал. Так что моей заслуги тут нет.
Подпись проходит рефакторинг

david141
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 12.04.2007 (Чт) 14:02

Сообщение david141 » 11.01.2008 (Пт) 20:30

Всем спасибо

david141
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 12.04.2007 (Чт) 14:02

Сообщение david141 » 19.01.2008 (Сб) 21:34

Всем привет.
Ребята есть ещё один вопрос может кто поможет?
Как сделать чтобы сверялось слово в текстовом поле с ListBox
Допустим в ListBox уже есть это слово при совпадении юзер должен узнать об этом.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 20.01.2008 (Вс) 11:07

API Guide писал(а):List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))

Или в цикле перебирать итемы листбокса...
И если какие-то вопросы возникают, лучше создавать новую тему.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 105

    TopList