|
Я здесь лежал, и здесь мои друзья
С таким похмельем долго жить нельзя
Средь глючных вИндов в пьяной тишине,
Какой-то юзер подпевает мне...
|
Я предлагаю обработать событие OnKeyPress следующим образом:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if NOT (Key in ('0'..'9', '.', #8, #13)) // разрешенные клавиши
OR ( (Key = '.') // пользователь нажал '.'
AND (POS ('.', Edit1.Text) > 0)) // десятичная точка уже имеется
then
begin
Key := #0;
MessageBeep (MB_OK);
end;
end;
|
В коде проверяется, была ли нажатая клавиша цифрой, клавишей [Tab] или
[Enter]. Все остальное запрещено (код клавиши не принимается, и устанавливается
в ноль) и подается сигнал через компьютерную пищалку.
Если вы не хотите связываться с десятичной дробью, уберите строчку с ключевым
словом OR и символ '.' из первого IF-условия. Если вы хотите проверять, что
пользователь ввел между LowLimit и HighLimit, воспользуйтесь следующим
кодом:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if NOT (Key in ('0'..'9', #8, #13))
OR (StrToInt (Edit1.Text + Key) < LowLimit)
OR (StrToInt (Edit1.Text + Key) > HighLimit)
then
begin
Key := #0;
MessageBeep (MB_OK);
end;
end;
|
|