У меня есть окно редактирования и я пытаюсь заставить его принимать числа только от 0 до 12. Я написал обработчик onExit, например это:Delphi- Сделать EditBox, чтобы принимать только числа lessthan или равно (<=) 12 на событие Keypress
procedure TfrmCourse.edtDurationExit(Sender: TObject);
begin
if not string.IsNullOrEmpty(edtDuration.Text) then
begin
if StrToInt(edtDuration.Text) > 12 then
begin
edtDuration.Clear;
edtDuration.SetFocus;
end;
end;
end;
... но я хочу, чтобы проверить этот во время набора текста. TEdit следует принимать только цифровой входной сигнал и предупредить, когда значение> 12.
ОТВЕТ, что я предложить на этот вопрос
окончательный ответ
procedure TfrmCourse.edtDurationKeyPress(Sender: TObject; var Key: Char);
var
sTextvalue: string;
begin
if Sender = edtDuration then
begin
if (Key = FormatSettings.DecimalSeparator) AND
(pos(FormatSettings.DecimalSeparator, edtDuration.Text) <> 0) then
Key := #0;
if (charInSet(Key, ['0' .. '9'])) then
begin
sTextvalue := TEdit(Sender).Text + Key;
if sTextvalue <> '' then
begin
if ((StrToFloat(sTextvalue) > 12) and (Key <> #8)) then
Key := #0;
end;
end
end;
end;
Элемент управления TMaskEdit может ограничить ввод двух цифр, но для получения допустимого диапазона вам необходимо выполнить собственный производный контроль. –
Это обработчик с именем * edtDurationExit *, но вы проверяете значения * edtDays * ... Переименуйте событие, если это обработчик edtDays.OnExit. –
Используйте один из событий OnKey .... –