С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/79: Рейтинг темы: голосов - 79, средняя оценка - 4.57
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607

Проверить, находятся ли в Edit только цифры

08.06.2009, 23:49. Показов 14874. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот появилась необходимость проверять в Edit наличие только цифр...
Да, я знаю что тем было много, но тут кое что другое...


C++
1
2
3
4
5
6
 
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if ((Key >= '0') && (Key <= '9')) {} // цифры
else Key = 0; // не цифра
}

1) Вот это все прекрасно работает, но неполучается разрешить VK_BACKSPACE
2) Ведь можно нажать правую кнопку мыши (контекстное меню вызвать) и выбрать "вставить" - этого хочется избежать
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2009, 23:49
Ответы с готовыми решениями:

Определить, только ли цифры находятся в TEdit
char a; strcpy(a,Edit1-&gt;Text.t_str()); if(Edit1-&gt;NumbersOnly) { ShowMessage(&quot; не &quot;); }вот короче код; как...

Edit1 только char , edit 2 только цифры
Здравствуйте. Видимо не умею использовать поиск. Прошу помощи. У меня есть два edit , при нажатии кнопки должна произойти проверка что в...

Только цифры в Edit
Доброе утро!!!!!! Ребята подскажите, пожалуйста, как сделать так, чтобы в Edit можно вставлять, только цифры????? А буквы или...

14
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
08.06.2009, 23:58
Лучший ответ Сообщение было отмечено как решение

Решение

C++ Builder у меня нету но есть Delphi. Там есть событие OnChange вот в нем и проверяй. может можно и лучше(я в этих Builder и Delphi мало шарю)

Добавлено через 3 минуты 55 секунд
ps. это
C++
1
if ((Key >= '0') && (Key <= '9')) {} // цифры
можно заменить на
C++
1
if (isdigit(Key)) {} // цифры
4
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
09.06.2009, 00:14
Gremlin,
Цитата Сообщение от ISergey Посмотреть сообщение
if (isdigit(Key) || (Key == VK_BACK) {return;}
/*далее без else */Key = 0;
2
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
09.06.2009, 00:26  [ТС]
спс Вам
теперь - Ведь можно нажать правую кнопку мыши (контекстное меню вызвать) и выбрать "вставить" - этого хочется избежать
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
09.06.2009, 00:31
ISergey,
Цитата Сообщение от ISergey Посмотреть сообщение
isdigit
вещь!!! Спасибо! В
Цитата Сообщение от ISergey Посмотреть сообщение
(я в этих Builder и Delphi мало шарю)
Работает.
1
49 / 49 / 4
Регистрация: 21.05.2009
Сообщений: 156
09.06.2009, 00:34
теперь - Ведь можно нажать правую кнопку мыши (контекстное меню вызвать) и выбрать "вставить" - этого хочется избежать
Проверай текст в едите. Событие OnChange
1
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
09.06.2009, 00:45
Gremlin,
Цитата Сообщение от Gremlin Посмотреть сообщение
выбрать "вставить" - этого хочется избежать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
    Edit3->ReadOnly = false;
 
    if (isdigit(Key) || (Key == VK_BACK)) {return;}
    Key = 0;    
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit3MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    if(Button == mbRight)Edit3->ReadOnly = true;
}
//---------------------------------------------------------------------------
невставляет!
2
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
09.06.2009, 13:59  [ТС]
mirso, спасибо большое, можно даже в FAQ выложить...
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
09.06.2009, 15:03
mirso, спасибо большое, можно даже в FAQ выложить...
А ещё лучше попробовать нажать Shift+Insert...
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
09.06.2009, 16:12  [ТС]
Цитата Сообщение от rangerx Посмотреть сообщение
А ещё лучше попробовать нажать Shift+Insert...
Значит еще и INSERT запретить =)
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
09.06.2009, 18:01
Unit1.h
C++
1
2
3
4
//...
private:
    void __fastcall NewEditProc(TMessage &message);
//...
Unit1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//...
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Edit1->WindowProc = NewEditProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NewEditProc(TMessage &message)
{
    if(message.Msg != WM_PASTE)
        Edit1->Dispatch(&message);
}
//...
2
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
27.10.2016, 10:06
Цитата Сообщение от Gremlin Посмотреть сообщение
Вот появилась необходимость проверять в Edit наличие только цифр...
Да, я знаю что тем было много, но тут кое что другое...
C++
Выделить код
1
2
3
4
5
6
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if ((Key >= '0') && (Key <= '9')) {} // цифры
else Key = 0; // не цифра
}
1) Вот это все прекрасно работает, но неполучается разрешить VK_BACKSPACE
Лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch(Key)
{
    case VK_RETURN: try
    {
        //Сюда преобразование
    }
    catch(...) 
    { 
        //Сюда "страховка"
    }
    break;
    case '.':
    case ',': Key = FormatSettings.DecimalSeparator; break;
    case '-': break; //Минус можно
    default: if(!iscntrl(Key) && !isdigit(Key))
        Key = 0;
}
0
27.10.2016, 10:37

Не по теме:

...прошло 7 лет. ТС получил лучший ответ.

0
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
27.10.2016, 10:39
Другим пригодится. Я сам теми "больше-меньше" долго пользовался, а ведь это проблемный метод, который блокирует горячие клавиши.
0
2 / 2 / 2
Регистрация: 27.12.2015
Сообщений: 18
27.10.2016, 20:27
Ну, можно просто делать вот такую проверку. Ввести не только цифры можно, но программа выдаст ошибку и прервет выполнение функции.
C++
1
2
3
4
5
6
float xn;
if (!TryStrToFloat(Edit1->Text, xn))
   {
  ShowMessage("Неверное значение Xn");
  return;
   }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2016, 20:27
Помогаю со студенческими работами здесь

Разработать функцию, которая принимает 1 строку и выясняет, находятся ли в ней только цифры
Разработать функцию, которая принимает 1 строку и выясняет, находятся ли в ней только цифры

Ограничение ввода в Edit (только цифры)
Народ подскажите пожалуйста. У меня на форме есть Edit, с этого Edit в таблицу БД забивает стоимость блюда. подскажите, как сделать так,...

Как сделать, чтобы в Edit вводились только цифры?
Як зробити щоб в Edit (Builder c++) вводились тільки цифри?

Как сделать ввод в поле EDIT только цифры и пробел?
Мне нужен вот такой формат: 3 2 4 23 44 23 0 23 hE = CreateWindowEx(WS_EX_CLIENTEDGE, WC_EDIT, L&quot;&quot;, WS_CHILD | WS_VISIBLE |...

Сделать так, чтобы в панель Edit text вводились только цифры
Как сделать так, чтобы в панель Edit text вводились только цифры, и как ещё можно сделать, чтобы там сначала был 0, пока не нажмёшь на...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru