Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.05.2019
Сообщений: 21
Builder 6

Работа с полем Edit ?

19.01.2020, 12:00. Показов 6403. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Помогите собрать конструкцию (можно не за бесплатно) в Builder 6 C++ , нужно что бы в поле EDIT1 при вводе текста и цифр автоматом ставился пробел после двух символов и автоматом становилась заглавная буква и было ограничено количество ввода символов. Пример: A1 CB FF AA 89 FF DF FC —- то есть в данном примере видно , что ввод всего 8 байт , через пробел и заглавными буквами.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2020, 12:00
Ответы с готовыми решениями:

Работа с полем Edit
Здравствуйте! есть такой код кнопки на форме: void __fastcall TForm1::Button15Click(TObject *Sender) { int s1=0; for(int i=0;...

Как свойство Caption задать полем ввода Edit?
Как создать приложение с кнопкой, у которой свойство Caption задается полем ввода Edit, и двумя компонентами SpinEdit, изменяющими...

Работа с текстовым полем
Пишу калькулятор. С помощью кнопок на форме ввожу числа в Edit. Хочу сделать кнопку, которая будет удалять по одному символу из текстового...

44
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,413
19.01.2020, 12:10
А TMaskEdit с соседней вкладки контролов - не поможет?
0
0 / 0 / 0
Регистрация: 22.05.2019
Сообщений: 21
19.01.2020, 12:37  [ТС]
Сможете пример если это возможно написать ? Я только учусь.

Добавлено через 17 минут
TMaskEdit - Такого вообще нигде не могу найти или нету.
0
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,413
19.01.2020, 15:33
Название: Image_.png
Просмотров: 144

Размер: 3.7 Кб
1
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
19.01.2020, 18:50
Цитата Сообщение от seregag4 Посмотреть сообщение
и было ограничено количество ввода символов
Тут не только количество - тут и сами вводимые символы надо ограничивать...
Ограничить количество вводимых символов - свойство MaxLength компонента TEdit.
А все остальное... seregag4, Вы пытаетесь пользователя заставить mac-адрес ввести? Ну так единого стандарта записи мака просто нет:
A1 CB FF AA 89 FF DF FC
a1 cb ff aa 89 ff df fc
a1:cb:ff:aa:89:ff:df:fc
A1-CB-FF-AA-89-FF-DF-FC
все это валидные записи мак-адресов...
Не проще ли не напрягать пользователя своими хотелками (только заглавные, из HEX-диапазона да еще и пробел через 2 символа на третий...), пусть себе вводит маленькими и одним словом, а разрешенные сиволы для ввода - ограничить, чтобы лишнего не навводили, и проводить нужные Вам преобразования по завершении ввода, например, после потери данным Эдитом фокуса (событие OnExit)
0
0 / 0 / 0
Регистрация: 22.05.2019
Сообщений: 21
19.01.2020, 19:25  [ТС]
В поле Edit1 будут вводиться hex значения любые , вот и нужно что бы при вводе они автоматом становились заглавными и через пробел и не больше 8. байт можно было в поле ввести
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
20.01.2020, 00:00
Цитата Сообщение от seregag4 Посмотреть сообщение
при вводе текста и цифр автоматом ставился пробел
Это лишнее усложнение жизни пользователю и себе
Проще ограничить ввод цифрами и буквами [0-9][A-F][a-f] -- а при вводе каждого символа парсить введенную строку и цветом обозначать валидность введенного...

Как вариант - в отдельном от поля ввода поле выводить результат парсинга ввода - например в Edit набрано
что-то типа "12 aA bB cc-DD-eE" -- а в отдельном поле выводится "12 AA BB CC DD EE"

А править пользовательский ввод на ходу - идея не очень.
0
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,413
20.01.2020, 01:02
Цитата Сообщение от seregag4 Посмотреть сообщение
нужно что бы при вводе они автоматом становились заглавными
Поставьте Едиту обработчик события OnKeyPress с такой строкой в его тушке:
C++
1
    Key=(char)toupper(Key);
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
20.01.2020, 06:12
Лучший ответ Сообщение было отмечено TrollHammer как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Edit1->MaxLength = 16; //Запрет ввода в Эдит больше 16 символов
}
//---------------------------------------------------------------------------
//Запрет ввода в Эдит чего либо отличного от чисел HEX-диапазона
//ввод производится в одно слово без учета регистра
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
   const String Valid = "1234567890abcdefABCDEF";
   Key = Valid.Pos(Key) ? Key : 0x0;
}
//---------------------------------------------------------------------------
//Преобразование текста в нужный формат в момент потери Эдитом фокуса
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
   String s = Edit1->Text;
   for(int i = 1; i < Edit1->MaxLength + Edit1->MaxLength / 2 + 1; i++)
     if(i % 3 == 0) s.Insert(" ", i);
    Edit1->Text = AnsiUpperCase(s);
}
//---------------------------------------------------------------------------
2
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
20.01.2020, 06:45
Цитата Сообщение от D1973 Посмотреть сообщение
if(i % 3 == 0) s.Insert(" ", i);
А если пользователь вводил вот это:

"112233" = "1 1 2 2 3 3"

Ну ерунда же организовывать такое...
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
20.01.2020, 07:01
Цитата Сообщение от vantfiles Посмотреть сообщение
Ну ерунда же организовывать такое...
А пользователь не сможет ввести пробелы, вот здесь запрет
Цитата Сообщение от D1973 Посмотреть сообщение
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
   const String Valid = "1234567890abcdefABCDEF";
   Key = Valid.Pos(Key) ? Key : 0x0;
}
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
20.01.2020, 11:00
Цитата Сообщение от vantfiles Посмотреть сообщение
А если пользователь вводил вот это:
А что не так? Ввел "112233" - получил "11 22 33"... Что и требовалось, собственно...
Предвижу возражения, что мол от копипасты этот код не поможет... Да, не поможет. Упор был сделан на фразу ТС-а
Цитата Сообщение от seregag4 Посмотреть сообщение
будут вводиться
1
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
20.01.2020, 12:50
Цитата Сообщение от D1973 Посмотреть сообщение
что мол от копипасты этот код не поможет...
Ну там мелочь в обработчике Edit1Exit сделать , типа ReplaceStr или подобного

Добавлено через 2 минуты
Был у меня код, который при копировании из буфера обмена в эдит удалял пробелы в тексте (копировались и вставлялись кадастровые номера из браузера со страницы росреестра), найду - выложу, мож кому пригодится.
0
0 / 0 / 0
Регистрация: 22.05.2019
Сообщений: 21
20.01.2020, 19:49  [ТС]
Спасибо вам за ответы и подсказки. Буду пробовать за одно и учиться .

Добавлено через 9 минут
Я так понимаю в 9 посте - это не один код а три кода т.е. три разных варианта на выбор ?
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
21.01.2020, 00:10
Цитата Сообщение от seregag4 Посмотреть сообщение
это не один код а три кода
Это один код для обработчиков событий Edit1
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
21.01.2020, 06:45
Цитата Сообщение от seregag4 Посмотреть сообщение
три разных варианта на выбор ?
Нет, это реакция на 3 события в цикле функционирования программы:
1. __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
Конструктор формы. Выполняется один раз в момент создания формы при старте приложения. В этом обработчике устанавливается максимально возможная длина текста в компоненте Edit1 (хотя это свойство спокойно можно было установить на этапе проектирования в Object Inspector)
2. void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
Обработчик события нажатия клавиатурной клавиши в момент, когда фокус ввода находится на компоненте Edit1. В этом обработчике проверяется, какую клавишу нажал пользователь и если клавиша не удовлетворяет условию вхождения символа в диапазон допустимых для HEX-числа (0..9, A..F) - то ничего не происходит, иначе символ впечатывается в Edit1
3. void __fastcall TForm1::Edit1Exit(TObject *Sender)
Реакция на потерю фокуса компонентом Edit1. Когда ввод завершен и пользователь переводит фокус на другой компонент, код в обработчике переводит текст в поле Edit1 в верхний регистр и расставляет пробелы в каждую 3-ю позицию этого текста.
0
0 / 0 / 0
Регистрация: 22.05.2019
Сообщений: 21
21.01.2020, 08:38  [ТС]
Значит в фигурных скобках пишу все три реакции под __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) - ? Верно ?
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
21.01.2020, 08:50
Цитата Сообщение от seregag4 Посмотреть сообщение
Значит в фигурных скобках пишу все три реакции
Создаете обработчик - выделяете Edit1 на форме, в Object Inspector на вкладке Events двойным щелчком на типе события, например OnKeyPress, в редакторе кода создается тушка обработчика, туда вписываете нужный кусок кода. Вот готовый проект, открывайте, изучайте
Вложения
Тип файла: zip project1.zip (6.9 Кб, 1 просмотров)
1
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
21.01.2020, 08:51
D1973, Кстати у ТС 6-ка. Там класс String присутствует? Я не помню.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
21.01.2020, 09:02
Цитата Сообщение от TrollHammer Посмотреть сообщение
Там класс String присутствует?
Конечно. Я, кстати, пример этот тоже на ВСВ6 делал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2020, 09:02
Помогаю со студенческими работами здесь

Работа с полем Memo - получение подстрок
Здравствуйте, подскажите пожалуйста как из Memo1-&gt;Lines-&gt;Add(&quot;-3,2&quot;); отдельно в две разные переменные вытащить -3 и 2??? Добавлено...

работа с Edit
Подскажите как из поля Edit считать данные с разделителями в виде &quot;:&quot; в формате int в массив.

Работа с Edit
Здравствуйте. Подскажите, вот на скрине есть несколько Edit Как сделать что бы там где &quot;Прізвище&quot; наприер можна было вводить...

Работа с Edit
Есть ли способ заменить Edit1, Edit2...Editn переменной, что б в цикле можно было менять его номер?

Работа с Edit и Label
Помогите пожалуйста, задача такая: Есть форма, есть 5 Edit и 1 label, кнопок нет. При вводе в любой Edit данные должны автоматом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru