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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2009, 14:12   #1
epic6
Новичок
Джуниор
 
Регистрация: 13.06.2009
Сообщений: 2
По умолчанию запрет ввода одинаковых чисел в edit

Всем привет! сори если повторяюсь с такой темой, но не нашел ее в поиске по форуму. не могу додуматься как сделать чтобы в edit можно было вводить только разные числа. например если ввели в edit "345" и когда еще вводим например число "4" то чтобы ничего не произходило, т.е. key := #0; вот немогу додуматься как проверять одинаковые цифры, но знаю что это нужно делать в обработчике события OnKeyPress. пожалуйста, помогите кто может. заранее спасибо.
epic6 вне форума Ответить с цитированием
Старый 13.06.2009, 14:24   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
if pos(key,edit1.text)>0 then key:=#0;
vovk вне форума Ответить с цитированием
Старый 13.06.2009, 14:29   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот что у меня получилось:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
 i: integer;
begin
 //Сначала проверяем число ли введено
 if not (Key in ['0'..'9']) then Key := #0;
 for i := 1 to Length(Edit1.Text) do
  if Edit1.Text[i] = Key then Key := #0;
end;
Но так как сказал vovk, лучше будет
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9']) then Key := #0;
 if pos(key, edit1.text) <> 0 then Key := #0;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 13.06.2009, 14:49   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

тогда дополню бэкспейс то тоже пригодится (делит и стрелки будут работать и так)

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9']) and (key<>#8) then Key := #0;
 if pos(key, edit1.text) <> 0 then Key := #0;
end;
vovk вне форума Ответить с цитированием
Старый 13.06.2009, 17:12   #5
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Даже ещё покороче чуть можно
Код:
not (Key in ['0'..'9']) and (key<>#8)
эквивалентно
Код:
not (Key in ['0'..'9', #8])
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 13.06.2009, 19:55   #6
epic6
Новичок
Джуниор
 
Регистрация: 13.06.2009
Сообщений: 2
По умолчанию

Точно! все просто. спасибо (-:

еще такой вопрос, как сделать так, чтобы в edit можно было вводить только 4х значное число? в свойстве edit'а maxlength я 4 поставил, но 1, 2х и 3х значные числа вводить можно. нужно определять длинну свойства text как я понял. но не знаю как.

Последний раз редактировалось Stilet; 15.06.2009 в 09:08.
epic6 вне форума Ответить с цитированием
Старый 15.06.2009, 08:31   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

length(Edit1.Text)
вернет длину текста в эдите
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать фокус ввода в поле Edit Arassir Помощь студентам 14 11.07.2012 12:37
Запрет ввода с клавиатуры букв Omedus Общие вопросы Delphi 13 16.05.2010 14:39
Ограничение ввода в Edit xxxsas Общие вопросы C/C++ 4 22.01.2009 12:36
Ограничение ввода в Edit Макс84 Компоненты Delphi 7 23.07.2007 09:38
Запрет ввода кирилических символов wnuks Microsoft Office Excel 1 12.07.2007 19:45