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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2014, 11:27   #1
ZdSaliery
Пользователь
 
Регистрация: 22.03.2014
Сообщений: 14
По умолчанию Ограничения для Edit'а

Добрый день! Подскажите пожалуйста - есть два едита: в первый нужно вводить только цифры от 0 до 3, а во второй только целые числа. Как это возможно реализовать!
ZdSaliery вне форума Ответить с цитированием
Старый 30.05.2014, 11:36   #2
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

В обработчике события KeyPress читаете код нажатой клавиши клавиатуры, а дальше пишите проверочные условия... Если символ не допустим, то стираете его (отменяете его вывод в едит)
помогать студентам - моя вторая профессия
was3110 вне форума Ответить с цитированием
Старый 30.05.2014, 11:55   #3
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Было бы хорошо ещё назвать язык. Edit'ы есть везде.
Delphi
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
 begin 
 if not (Key in ['0'..'9', #8])then Key:=#0; 
 end;
ATL вне форума Ответить с цитированием
Старый 30.05.2014, 18:13   #4
ZdSaliery
Пользователь
 
Регистрация: 22.03.2014
Сообщений: 14
По умолчанию

Да, делфи. Спасибо большое! Но сейчас проверил - не работает =( Процедуры поставил в самом верху текста - но как то он не реагирует - че хочу то и ввожу

Код:
procedure TForm1.Edit32KeyPress(Sender: TObject );
var Key: Char ;
begin
  if not (Key in ['0'..'9', #8,#46])then Key:=#0;
end;

procedure TForm1.Edit30KeyPress(Sender: TObject);
var
   Key:Char;
begin
  if not(key in ['0'..'3',#8,#46]) then key:=#0;
end;
ZdSaliery вне форума Ответить с цитированием
Старый 30.05.2014, 18:23   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

ZdSaliery, я не понял, как это вам удалось так " доработать " процедуру-обработчик - удалить var Key: Char из списка аргументов и вставить куда не надо.

Так, как написал ALT, все работает. И если '0..3' - тоже, только 0,1,2,3 вводится.
type_Oleg вне форума Ответить с цитированием
Старый 30.05.2014, 18:33   #6
ZdSaliery
Пользователь
 
Регистрация: 22.03.2014
Сообщений: 14
По умолчанию

ну да, но по другому дебагер выдает кучу ошибок
Код:
[Error] Unit_s.pas(298): Undeclared identifier: 'Edit32KeyPress'
[Error] Unit_s.pas(298): ';' expected but '(' found
[Error] Unit_s.pas(300): Undeclared identifier: 'Key'
[Error] Unit_s.pas(303): Undeclared identifier: 'Edit30KeyPress'
[Error] Unit_s.pas(303): ';' expected but '(' found
[Error] Unit_s.pas(305): Undeclared identifier: 'key'
[Error] Unit_s.pas(413): Undeclared identifier: 'Edit30KeyPress'
[Error] Unit_s.pas(731): Undeclared identifier: 'Edit32KeyPress'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit_s.pas'
Я очень туплю наверное ?(
ZdSaliery вне форума Ответить с цитированием
Старый 30.05.2014, 18:42   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Вы как делаете ? У вас есть такой Edit32, или вы сами такой придумали?
Объясняю по шагам:
У меня один Edit - называется Edit1, у вас - не знаю какой.
Тык на Edit1, тык на События(Events),тык, тык-тык на ObKeyPress, и в procedure TForm1.Edit1KeyPress(Sender: TObject;var Key: Char ); между begin .. end вставить
Код:
if not (Key in ['0'..'3', #8,#46])then Key:=#0;
И все
type_Oleg вне форума Ответить с цитированием
Старый 30.05.2014, 18:47   #8
ZdSaliery
Пользователь
 
Регистрация: 22.03.2014
Сообщений: 14
По умолчанию

type_Oleg спасибо огромаднейшее :D особенно за тык-тык :D два дня не спал, извините, еще раз за тупости :D

Все сделал, все получилось! Спасибо можно закрывать!

Последний раз редактировалось ZdSaliery; 30.05.2014 в 19:12. Причина: up
ZdSaliery вне форума Ответить с цитированием
Старый 30.05.2014, 19:12   #9
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от ZdSaliery Посмотреть сообщение
.. как отучить его вводить точку?
Уберите #46 - это код точки.
type_Oleg вне форума Ответить с цитированием
Старый 30.05.2014, 19:59   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Для чисел проще использовать TSpinEdit.
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно составить ограничения для оптимизационной задачи? Энжи Помощь студентам 7 30.05.2011 17:32
Ограничения Flatterer Фриланс 1 08.03.2010 20:16
Одна процедура для всех Edit(ов) SoftKoc Общие вопросы Delphi 7 23.01.2010 13:44
Фокус для Edit'a Detka Помощь студентам 39 12.02.2009 22:44
PopupMenu для формы свое, а для Edit - стандартное Виндоус yaver Общие вопросы Delphi 4 10.11.2008 15:03