procedure TForm1.Edit1Exit(Sender: TObject);
var
  f: Double
begin
  try
    f := StrToFloat((Sender as TEdit).Text);
  except
    on EConvertError do
    begin
      ShowMessage('非法数字!');
      (Sender as TEdit).Text := '';
    end;
  end;
end;

解决方案 »

  1.   

    来啊!你们时怎么实现edit输入框只能输入数字、小数点、负号并且保证它是合法的小数格式,不能多个小数点,只能把负号放在前面等!
      

  2.   

    // 刚才的代码有点问题,少了个“;”procedure TForm1.Edit1Exit(Sender: TObject);
    var
      f: Double;
    begin
      try
        f := StrToFloat((Sender as TEdit).Text);
      except
        on E: EConvertError do
        begin
          ShowMessage('非法数字!');
          (Sender as TEdit).Text := '';
        end;
      end;
    end;
      

  3.   

    procedure TForm1.Edit2Exit(Sender: TObject);
    begin
       if Edit2.Text<>'' then
        begin
         try
             StrtoFloat(Edit1.Text);
         except
           Begin
             Application.MessageBox('请输入合法的数字!','错误:',MB_OK);
             Edit1.SetFocus;
    //如果是onpress这里加一句         key:=char(0);
           end;
         end;
        end;
    end;
      

  4.   

    StrToFloatDef函数试试
    配全 if (Key in ['0'..'9','.','-']) then