我用SetWindowLong(Edit1.Handle, GWL_STYLE,
                 GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER);这个函数限制EDIT 只能输入数字,但现在发现,效果是达到了,但是无法输入小数点了。就是我想输入0.003,确只能写成0003,小数点无法输入,怎么办啊??
急!!

解决方案 »

  1.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['0'..'9','.']) then key:=#0;
    end;
      

  2.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (key in ['0'..'9','.',#13,#8]) then key:=#0;
    end;
      

  3.   

    if not (key in ['0'..'9','.']) then key:=#0;
      

  4.   

    上面的都写错了
    因为可以输入两个以上的小数点,例如:32..346...
    必须在进行KeyPress和Change的时候监视是否有小数点
    bDecimalPoint:boolean,表示是否有小数点
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      if pos('.',edit1.text)=0 then
        bDecimalPoint:=false
      else
        bDecimalPoint:=True;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      bDecimalPoint:=false;
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin  if (key in ['0'..'9',#8,#13,'.']) then
        if (key='.') and (bDecimalPoint) then
          key:=#0
        else//不能省略
      else
        key:=#0;
    end;