Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 23:49   #1
BastAngel
Пользователь
 
Аватар для BastAngel
 
Регистрация: 02.06.2010
Сообщений: 53
По умолчанию Ввод - сделать так, чтобы в Edit можно было вводить только цифры, или на оборот, только буквы

Как сделать что бы в Edit можно было вводить только цифры, или на оборот, только буквы?
BastAngel вне форума Ответить с цитированием
Старый 26.04.2012, 00:03   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

OnKeyPress или OnKeyDown обрабатывать пробовали?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 26.04.2012, 00:04   #3
BastAngel
Пользователь
 
Аватар для BastAngel
 
Регистрация: 02.06.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
OnKeyPress или OnKeyDown обрабатывать пробовали?
поподробней можно?
BastAngel вне форума Ответить с цитированием
Старый 26.04.2012, 00:46   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,674
По умолчанию

На OnKeyPress:
Код:
if (Key > #31) and not (Key in ['0'..'9']) then Key := #0;
Arigato вне форума Ответить с цитированием
Старый 26.04.2012, 01:52   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

в старших версиях delphi(> 7) у всех TEdit есть свойство NumbersOnly
Человек_Борща вне форума Ответить с цитированием
Старый 26.04.2012, 08:03   #6
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

я так понимаю у вас тут пол группы сидит на сайте) курсач пишите?))

вот вам обработка из моих программ времён учёбы)


Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',DecimalSeparator,#8]) // символы которые пропускаются
    or  (length(Edit1.Text)>6) then
  begin
      Key := #0; // запрещенный символ заменяем нулем
      MessageBeep (MB_OK); // биб в спикир
  end;
end;
Код:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin

if ((Ord(key)>=48) and (Ord(key)<=57)) or ((Ord(key)>=96) and (Ord(key)<=105))
 or (length(Edit2.Text)>20)
then
  begin
      Key := #0; // запрещенный символ заменяем нулем
      MessageBeep (MB_OK);
  end;

end;
Dozent вне форума Ответить с цитированием
Старый 26.04.2012, 09:24   #7
BastAngel
Пользователь
 
Аватар для BastAngel
 
Регистрация: 02.06.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Dozent Посмотреть сообщение
я так понимаю у вас тут пол группы сидит на сайте) курсач пишите?))

вот вам обработка из моих программ времён учёбы)


Спасибо всем)))

Да нет не курсач, все на много хуже, диплом(
BastAngel вне форума Ответить с цитированием
Старый 27.04.2012, 01:15   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,674
По умолчанию

Dozent

В 1-м примере не пропускаются стрелочки. Можно еще так сделать:
Код:
if not (Key in [#0..#31, '0'..'9']) then Key := #0;
Но остается возможность вставить лишние символы через буфер обмена, так что нужна дополнительная проверка, ее можно после окончания ввода сделать.

Во 2-м примере совсем нет смысла функцию Ord использовать, можно сравнивать сами символы, как-то так: if (key >= #48) and (key <= #57) ...
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите пожалуйста, как сделать, чтобы в Edit можно было ввести цифры от 0 до 12. ciev Общие вопросы Delphi 6 14.05.2016 17:45
Как сделать, чтобы было только нажати 3 цифры XxXGhosTXxX Общие вопросы C/C++ 6 20.03.2011 15:31
Как в Edit вводить только цифры subsonic Общие вопросы Delphi 5 29.03.2010 23:39
Какую надо задать маску для MaskEdit, чтобы можно было вводить только цифры (притом с запятой)? Polotenchik Компоненты Delphi 24 17.07.2009 21:29
Как сделать так, чтобы форму можно было тостать не только за заголовок? Никки Общие вопросы Delphi 1 04.09.2008 14:34