procedure TXZBZZCT.Edt_ZQTSKeyPress(Sender: TObject; var Key: Char);
begin
  //方法1
  {if (key=#8) or (key='.')or (key<='9') and (key>='0')  then //or(key='+')or(key='-')
    key:=key
  else
    key:=#0;   }
  //方法2
    if StringUtils.PosAnsi(Key, '.0123456789') = 0 then
    Key := #0;
end;
现在可以控制只输入数字了
但是,1.如何让小数点.只能输入1个?
      2.如何激活键盘的回退键与删除键?

解决方案 »

  1.   

    回退键的ascii码为8,删除键的ascii码为46,你可以再加上if key<>#8 and key<>#46做判断,即是说当ascii码不为这个时候再判断输入的是否为数字,这样回退键跟删除键就可以用了
      

  2.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
        if not (key in ['0'..'9', #8, '.']) then key := #0;
        if (Key = '.') and (POS('.', (Sender as TEdit).Text) <> 0) then key := #0;
    end;
      

  3.   

    在Edit的OnExit事件中写
    try
      strtofloat(edit1.text);
    except
      edit1.clear;
    end;