窗体上设了一个EDIT1和一个EDIT2,是让用户输入数字的,要求必须只能是数字,汉字和字母都不能写上。而且EDIT1中不能输入小数,只能输入整数,因为是数量,不可能出现0.5只这种情况。EDIT2就可以输入小数,但小数点后面只能输入两位小数,因为是金额。控件中的maskedit感觉不好用。但自己又写不出这种代码,求助各位了。小弟是刚学的,问题多了点,请各位不要见怪。多多指教。

解决方案 »

  1.   

    edit1
    ------------
    try
      strtoint(edit1.text);
    except
      edit1.text := '';
      showmessage('只能输入数字');
    end;
      

  2.   

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

  3.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['0'..'9',#8]) then
      begin
        key:=#0;
        MessageBeep(1);
      end;
    end;procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['0'..'9',#8,#46]) then
      begin
        key:=#0;
        MessageBeep(1);
      end;
    end;procedure TForm1.Edit2Exit(Sender: TObject);
    begin
    edit2.Text:=formatfloat('0.00',strtofloat(edit2.Text));
    end;
      

  4.   

    procedure TForm1.Edit2Exit(Sender: TObject);
    begin
    edit2.Text:=formatfloat('0.00',strtofloat(edit2.Text));
    end;这里如果有人恶意输入比如35.5.56的话就会出错了阿。
      

  5.   

    procedure TForm1.Edit2Exit(Sender: TObject);
    begin
    try
      edit2.Text:=formatfloat('0.00',strtofloat(edit2.Text));
    except
      showmessage('输入有误');
    end;
    end;
      

  6.   

    用try语句来尝试转换也是不行,在except语句执行前,调试器先检测到错误了,比如我输入“26.5.5”,调试器提示出错说:“‘26.5.5’is not a valid floating point value‘。进程中止,怎么回事?