Как сделать, чтобы TEdit воспринимал одни цифры и DecimalSeparator?
Как сделать, чтобы TEdit воспринимал одни цифры и DecimalSeparator?
Автор: Full ( http://full.hotmail.ru/ )
type
TNumEdit = class(TEdit)
procedure CreateParams(var Params: TCreateParams); override;
procedure KeyPress(var Key: Char); override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TNumEdit]);
end;
procedure TNumEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
end;
procedure TNumEdit.KeyPress(var Key: Char);
begin
case key of
'0'..'9': ; // цифры
#8: ; // забой
'.', ',': if Pos(DecimalSeparator, Text)=0 then Key:=DecimalSeparator else Key:=#0; // десятичный разделитель
else key:=#0;
end; // case
end;
end.
Взято с Исходников.ru