ОБСУЖДЕНИЕ

Как запретить ввод букв?

10 ответов 21,4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Как запретить ввод в окно редактирования Tedit всех символов кроме цифр.
Чтобы написать примерно такую процедуру:

procedure TForm1.Edit1Change(Sender: TObject);
begin

If Table1.IndexName :=('Number') then
.....................{строка запрета ввода букв}

end;
 
Pol
Для этих целей удобнее, на мой взгляд, использовать событие KeyPress.
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Table1.IndexName='Number' then
begin
 If not (Key in ['0'..'9']) then
 Key:=#0;
end;
end;
 
Да, но зато скопировать туда текст как два пальца...
 
Для: Pol
юзай MaskEdit
 
А как в MaskEdit разрешить ввод неограниченного количества цифр, ну и запретить ввод букв?
 
А зачем собственно запрещать, может лучшше после ввода, при обработке, проверить все ли введено правильно.
Код:
try
StrToInt(Edit1.Text)
except
on EConvertError do
 ShowMessage('ОШИБКА');
end;
 
Примерный код ( даю общую идею )

y := введенный символ;
s := '1234567890';
fl := false;
for i := 1 to length( s ) do
if y <> s then fl := true

if fl = false then key := 0; ( или key := #0 )

броисть на кейдаун ( или на кей пресс посмотри должно работать )

ЗЫ за возможные неточности прошу прощенья - это только концепция
 
Только надо ещё добавить обработку DEL и BackSpace
 
Только надо ещё добавить обработку DEL и BackSpace

проверка кода кнопок и декрементное удаление строки
 
Проще не мчучаться и написать например так:

Код:
 if not (Key in ['0'..'9', #8]) then
 Key := #0;
 
Статус
Закрыто для дальнейших ответов.

Ещё по теме