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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2007, 07:05   #1
Askat
Пользователь
 
Регистрация: 11.06.2007
Сообщений: 20
По умолчанию Как сделать так, чтобы в компонент edit вводились цифры и аналогично с буквами?

(Как сделать так, чтобы в компонент edit вводились цифры и аналогично с буквами?)

Как сделать так, чтобы в компонент edit при нажати на цифр вводились только цифры, а буквы не вводились? и точно так же с буквами, вводим буквы цифры не вводились?

Последний раз редактировалось Askat; 21.08.2007 в 09:00.
Askat вне форума Ответить с цитированием
Старый 21.08.2007, 10:23   #2
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

На форуме уже были ответы и код. Видел только под цифры, но под буквы несложно сделать.

Все пишется в OnKeyPress, можно сделать общий обработчик для всех, а можно написать валидаторные функции, и вызывать для каждого эдита свою.
Net вне форума Ответить с цитированием
Старый 21.08.2007, 10:25   #3
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

C Помощью события OnKeyPress. нажатая клавиша содержится в переменной Key.
Например ввод только 1
Код:
if Key<> '1' then Key:=Chr(0);

Последний раз редактировалось Вадим Мошев; 23.02.2017 в 20:55.
Gorin вне форума Ответить с цитированием
Старый 21.08.2007, 12:53   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Пример: Ввод только чисел
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Код:
begin
 if (key='.')or(key=',')then key:=decimalseparator;//для ввода с десятыми
 if not (key in['0'..'9',decimalseparator,#8,#13]) then
 begin
  key:=#0;
  beep;
 end;

Последний раз редактировалось Вадим Мошев; 23.02.2017 в 20:54.
SERG1980 вне форума Ответить с цитированием
Старый 21.08.2007, 17:36   #5
@gent
 
Регистрация: 20.08.2007
Сообщений: 3
По умолчанию

До боли тупой код, но я особо не вдумывался. Если вес проги не так напрягает, можно наложить 2 edit друг на друга и менять каждый. И меняя каждый раз edit при нажатии клавиши для выбора букв или цифр

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

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if not (key in ['a'..'z']) and (key in ['A'..'Z']) and (key in ['а'..'я']) and (key in ['А'..'Я'])  then Key:=#0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.Visible:=true;
 edit2.Visible:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 edit2.Visible:=true;
 edit1.Visible:=false;
end;
Или я что не понял ?
Изучаю Delphi. Слово баян нефик и нафик.

Последний раз редактировалось Вадим Мошев; 23.02.2017 в 20:54.
@gent вне форума Ответить с цитированием
Старый 21.08.2007, 18:13   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Сообщение от @gent Посмотреть сообщение
До боли тупой код, но я особо не вдумывался. Если вес проги не так напрягает, можно наложить 2 edit друг на друга и менять каждый. И меняя каждый раз edit при нажатии клавиши для выбора букв или цифр

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

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if not (key in ['a'..'z']) and (key in ['A'..'Z']) and (key in ['а'..'я']) and (key in ['А'..'Я'])  then Key:=#0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.Visible:=true;
 edit2.Visible:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 edit2.Visible:=true;
 edit1.Visible:=false;
end;
Или я что не понял ?
Бедному пользователю даже стереть ничего нельзя будет ? жаль его бедного...
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи

Последний раз редактировалось Вадим Мошев; 23.02.2017 в 20:55.
Квэнди вне форума Ответить с цитированием
Старый 22.08.2007, 21:00   #7
CronEtc
 
Аватар для CronEtc
 
Регистрация: 22.08.2007
Сообщений: 4
По умолчанию

Есчё пример для цифр:
На форму, акромя edit, скинь компонент со фкладки additional - ApplicationEvents и в событии OMessage этого компонента пиши следующее:

Handled:=form1.Edit1.Focused and (Msg.message=wm_Char) and (Msg.wParam>=48) and (Msg.wParam<=57);


теперь когда фокус перейдёт на твой edit он начнёт фильтровать буквы....Вот.
Знаешь?-Подскажи. Не знаешь?-Спрашивай.
CronEtc вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать в Edit Ввод только чисел Pashin Компоненты Delphi 17 26.07.2011 21:12
Кто мне подскажет как сделать так чтобы... Alexij Общие вопросы Delphi 9 16.06.2008 12:47
Компонент Edit GazimagomedovM Помощь студентам 3 14.04.2008 23:59
Builder. компонент Edit <vlad> C++ Builder 3 01.02.2008 10:34
Как сделать чтобы прога не закрывалась vitalik007 Общие вопросы Delphi 8 12.01.2008 23:32