用MaskEdit或者:procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not(key in ['0'..'9','.',#8]) then key:=#0; end;
用OnKeyPress事件控制很好用的!
procedure TMaterialForm.lePriceKeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9', #8, '.']) then key := #0 else begin if key = '.' then begin if pos('.', TEdit(Sender).Text) > 0 then key := #0; //只能输入一个小数点 if (length(TEdit(Sender).Text) = 0) then //如果第一次输入'.'则自动加'0'; begin Tedit(Sender).SelText:='0.'; key:=#0; end; end else if key = '0' then begin if (length(TEdit(Sender).Text) = 1) and (TEdit(Sender).Text = '0') then key := #0; end else begin if (length(TEdit(Sender).Text) = 1) and (TEdit(Sender).Text = '0') then TEdit(Sender).Text := ''; end; end; end;
截获消息 时查看消息内容是否合法
如果不合法将消息结构都置为0
begin
if not(key in ['0'..'9','.',#8]) then key:=#0;
end;
begin
if not (key in ['0'..'9', #8, '.']) then
key := #0
else
begin
if key = '.' then
begin
if pos('.', TEdit(Sender).Text) > 0 then key := #0; //只能输入一个小数点
if (length(TEdit(Sender).Text) = 0) then //如果第一次输入'.'则自动加'0';
begin
Tedit(Sender).SelText:='0.';
key:=#0;
end;
end
else
if key = '0' then
begin
if (length(TEdit(Sender).Text) = 1) and (TEdit(Sender).Text = '0') then
key := #0;
end
else
begin
if (length(TEdit(Sender).Text) = 1) and (TEdit(Sender).Text = '0') then
TEdit(Sender).Text := '';
end;
end;
end;