Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
Flash211
0 / 0 / 0
Регистрация: 06.09.2009
Сообщений: 20
1

В StringGrid и Edit разрешить ввод только чисел

06.09.2009, 19:10. Просмотров 2605. Ответов 10
Метки нет (Все метки)

Нужна помошь, есть два элемента StringGrid и Edit, я хочу сделать так, что бы в них можно было вводить только цифры. Понимаю можно было сделать так, что бы выводилась ошибка, аля нельзя так. Но я хочу что бы вводились числа, а остальные клавиши с символами она просто игнорила. Искал в поиске подобные темы, но там немного другое. Помогите глупому студенту. Ну или на крайней случай, хотя бы что бы ошибку выводила сразу же после того как начал вводить не число )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2009, 19:10
Ответы с готовыми решениями:

Ввод только чисел в Edit
Делаю курсовую(пытаюсь сам). Нужно чтобы в Editы вводились только данные в...

Ввод только чисел в несколько Edit
Всем добрый день. Пытаюсь написать функцию, которая бы на событие OnKeyPress...

Разрешить ввод в Еdit только цифр
помогите сделать коректность ввода в Edit (вводить можно толькочисла , в случае...

Разрешить ввод только уникальных символов в TEdit
Здравствуйте! У меня имеется такой код: void __fastcall...

Ввод в Edit только английских букв
Мне надо чтобы в Edit вводились только английские буквы не смотря на раскладку....

10
chelovechek
сишник
Автор FAQ
130 / 37 / 1
Регистрация: 25.07.2009
Сообщений: 291
06.09.2009, 19:17 2
C++
1
2
3
4
5
6
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(((Key > '0')&&(Key < '9'))||(Key == VK_CLEAR)||(Key == VK_BACK))return;
Key = 0;
}
//---------------------------------------------------------------------------
0
qizer
8 / 8 / 0
Регистрация: 06.09.2009
Сообщений: 21
06.09.2009, 19:20 3
ошибочка, не вводятся цифры 9 и 0

правильный вариант

C
1
  if ((Key < '0' || Key > '9') && Key!=8) Key=0;
0
chelovechek
сишник
Автор FAQ
130 / 37 / 1
Регистрация: 25.07.2009
Сообщений: 291
06.09.2009, 19:22 4
C++
1
2
3
4
5
6
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(((Key >= '0')&&(Key <= '9'))||(Key == VK_CLEAR)||(Key == VK_BACK))return;
Key = 0;
}
//---------------------------------------------------------------------------
0
Flash211
0 / 0 / 0
Регистрация: 06.09.2009
Сообщений: 20
06.09.2009, 19:28  [ТС] 5
очень оперативно) думаю я тут выучусь языку лучше чем в своём учебном заведении ))) если у кого-то есть желание объяснить что значит "(Key == VK_CLEAR)||(Key == VK_BACK))return;" был бы благодарен XD
0
qizer
8 / 8 / 0
Регистрация: 06.09.2009
Сообщений: 21
06.09.2009, 20:13 6
Цитата Сообщение от Flash211 Посмотреть сообщение
(Key == VK_CLEAR)||(Key == VK_BACK))return;
я сам это хотел бы узнать, т.к. начальные зачатки си есть, а в тему случайно заглянул (:

chelovechek, смысл в двух одинаковых сообщениях?
0
chelovechek
сишник
Автор FAQ
130 / 37 / 1
Регистрация: 25.07.2009
Сообщений: 291
06.09.2009, 21:37 7
qizer, они разные (>= и <= вместо < и >) и это c++, а не си. В си, кажется, (a=0 & b>3 & f!=2*z.get())
Flash211,
Цитата Сообщение от chelovechek Посмотреть сообщение
if(((Key >= '0')&&(Key <= '9'))||(Key == VK_CLEAR)||(Key == VK_BACK))
Код
    если
	(
	   ( 
	      (
		    код_клавиши >= '0'
		  )
		  и
		  (
		    код_клавиши <= '9'
		  )
	    ) 
		или
		(
		  код_клавиши = Del
		)
		или
		(
		  код_клавиши = Backspace
		)
	)
0
qizer
8 / 8 / 0
Регистрация: 06.09.2009
Сообщений: 21
06.09.2009, 21:50 8
прошу прощения, не заметил. А синтаксис я выбрал, который первый увидел.
0
singleplayer
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
07.09.2009, 09:38 9
C++
1
2
3
4
5
void __fastcall TForm1::Edit10KeyPress(TObject *Sender, char &Key)
{
        if ( (isdigit(Key))||(Key==VK_BACK) ) {}
        else Key = 0;
}
имхо так лучше.
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
07.09.2009, 13:34 10
C++
1
if(!isdigit(Key) && Key != VK_BACK) Key = 0;
0
qizer
8 / 8 / 0
Регистрация: 06.09.2009
Сообщений: 21
07.09.2009, 17:46 11
Цитата Сообщение от rangerx Посмотреть сообщение
!isdigit(Key)
можно пояснить этот момент?
0
07.09.2009, 17:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2009, 17:46

Разрешение на ввод только букв в Edit
Знаю что создано много тем на этот вопрос, но не смог найти то что нужно. Вот...

Ввод в поле Edit только цифр (целых и вещественных)
Привет участникам форума! Меня интересует как при помощи события OnKeyPress в...

Компонент Edit: ввод только русских и латинских букв (в верхнем и нижнем регистре)
Вот запрет на ввод букв в компонент Edit: Set &lt;char, -255, 255&gt; Dig;...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru