Форум программистов, компьютерный форум CyberForum.ru

Запрет ввода символов в поле Edit - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
09.09.2012, 01:38     Запрет ввода символов в поле Edit #1
Как запретить нажатие и вставку из буфера всех символов, кроме нужных мне, к примеру разрешить вводить в поле только цифры? И еще 2-ой вариант, как отдельный, как запихать в переменную char или еще в какую Edit->Text в виде массива символов, так что бы можно было сравнить каждый символ в массиве с таблицей символов по коду и определить есть ли запрещенные символы? Какими способами можно реализовать первый и второй способ по отдельности?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
09.09.2012, 06:36     Запрет ввода символов в поле Edit #2
Вы в какой IDE работаете? В Builder'е? Я так понял вы с Form работаете. Вам нужно написать код внутри обработчика для keypress. (или же для keydown, если я правильно помню). Напишите там соответствующую обработку события и все. Тогда символы из буфера вставить не сможете. Но вы бы таки скинули свой код или скрины, чтобы можно было посмотреть, что вы уже сделали, и что надо добавить или изменить.
P.S. если вам только цифры нужны, то проще и проверять,например, является ли символ цифрой, а все остальные пропускать "мимо ушей":
if( Key == '0'){Edit->Text += '0';}; //как вариант
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
09.09.2012, 11:52  [ТС]     Запрет ввода символов в поле Edit #3
В билдере с формой. Я пока особо ничего не сделал, у меня есть поле Edit в которое надо заблокировать нажатие все кнопок кроме цифр, стрелок, удаления и запятой. Но + к этому оставить добавление в буфер, но что бы при попытке вставить что ли из буфера проходила проверка содержимого, то есть текст в буфере должен быть в виде массива char или еще чего, что бы я смог по 1-му символу в цикле проверить на допустимые символы. А после проверки вставить текст или выдать всплывающую подсказку или в lable написать, что текст большой или содержит недопустимые символы и т.д. Мне весь код не обязательно писать.
1)if( Key == '0'){Edit->Text += '0';}; никак не реагирует на событие он прес, даун и т.д. и хотелось бы проверку через коды символов.
2)Как все таки запихать текст Edit в переменную типа char или в какой-нибудь еще массив?
3)Как переменную из буфера при попытке вставить тоже поместить в какой-нибудь массив для проверки на содержание?
4)Как сделать появляющийся Lable знаю, а как сделать всплывающую подсказку - нет, она вроде на желтом фоне должна появляться?
Подскажите кто-нибудь каким методом можно это осуществить?
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
09.09.2012, 12:36     Запрет ввода символов в поле Edit #4
1) Нужно залезть в свойства компонента Edit, там переключится на список событий для Edit (OnCreate и т.п.) Там найти нужное событие и написать код для его обработки. Я конечно могу ошибаться на счет Key, но вроде в такую переменную записывается символ, введенный c клавиатуры (вы опять таки можете заглянуть в справку Builder'а, там подробно про это все расписано). (Событие называется OnKeyPress (OnKeyDown), также взгляните в справке)
2) На счет буфера: там есть функции для копирования и вставки Copy(); и Paste(); наберите в справке Builder'а (я сам уже давно на VC++ переехал, так что не совсем помню, как их использовать в Builder'е)
3) Чтоб перевести текст из Edit'а, вам нужна ANSI строка. Если правильно помню, то надо записать тип как AnsiString, но вы также лучше уточните в справке. (или же сделайте строку char* и попробуйте впихнуть в нее содержимое Edit'а, если компилятор начнет ругаться, то он выдаст вам, как правильно обозвать тип вашей строки)
P.S. со всплывающей подсказкой помочь совсем не могу, изв. Но вроде как должна быть на панели инструментов, а после в свойствах Edit'a надо её прописать.
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
09.09.2012, 13:15  [ТС]     Запрет ввода символов в поле Edit #5
Спасибо, буду пробовать. Я раньше тоже писал на VC++, а сейчас в универе надо в билдере все делать так приходиться на нем учиться.
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
09.09.2012, 13:26     Запрет ввода символов в поле Edit #6
Цитата Сообщение от klynxe Посмотреть сообщение
Спасибо, буду пробовать. Я раньше тоже писал на VC++, а сейчас в универе надо в билдере все делать так приходиться на нем учиться.
Эх... Универ. Там старье нынче-с. У нас тоже Builder на компьютерах в Универе. Благо ноутбуком пользоваться разрешают, а то этот Builder, мягко говоря, устарел.
Yandex
Объявления
09.09.2012, 13:26     Запрет ввода символов в поле Edit
Ответ Создать тему
Опции темы

Текущее время: 12:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru