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

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

08.06.2009, 23:49. Показов 14906. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru