• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы Pol
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
P

Pol

Как запретить ввод в окно редактирования 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;
 
Да, но зато скопировать туда текст как два пальца...
 
А как в 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
 
Проще не мчучаться и написать например так:

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab