Try
  i:=Strtoint(EdtNum.text);
Except
  showmessage('请输入正确的数字');
end;

解决方案 »

  1.   

    Try
      i:=Strtoint(EdtNum.text);
    Except
      showmessage('请输入正确的数字');
      Abort;      ---------------------再加个Abort;
    end;  
      

  2.   

    function GetDBGridEdit(mDBGrid: TDBGrid): TEdit;
    var
      I: Integer;
    begin
      Result := nil;
      with mDBGrid do for I := 0 to Pred(ComponentCount) do
        if Components[I] is TCustomEdit then begin
          Result := TEdit(Components[I]);
          Break;
        end;
    end; { GetDBGridEdit }function GetDBGridEditText(mDBGrid: TDBGrid): string;
    var
      vEdit: TEdit;
    begin
      vEdit := GetDBGridEdit(mDBGrid);
      if Assigned(vEdit) then
        Result := vEdit.Text
      else Result := '';
    end; { GetDBGridEditText }procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key = '.') and TDBGrid(Sender).EditorMode and
        (Pos('.', GetDBGridEditText(TDBGrid(Sender))) > 0) then
        Key := #0;
    end;
      

  3.   

    定义TDATASET
    的FIELD就可以了双击TDATSET(query table proc ETC)
    后加入FIELD
    选中某个FIELD后设置其属性
    EDITFORMAT和DISPFORMAT
    好象是 #######.00 or 00000.00
    自己试下吧!
     
      

  4.   

    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    var
      vNumber: Extended;
    begin
      if TDBGrid(Sender).EditorMode and
        (TryStrToFloat(GetDBGridEditText(TDBGrid(Sender)) + Key, vNumber)) then
        Key := #0;
    end;
      

  5.   

    感觉感谢各位的帮忙,小弟在此谢谢你们了,
    另外还有一个问题请教大家,在dbgrid中的数值字段怎么控制只能输入2位小数,如123.36,因为如果不控制,可以输入好多位小数位数。
      

  6.   

    //发挥点想象吧
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    var
      vNumber: Extended;
    begin
      if TDBGrid(Sender).EditorMode then
        if (TryStrToFloat(GetDBGridEditText(TDBGrid(Sender)) + Key, vNumber)) then
          Key := #0
        else if Int(vNumber * 100) <> vNumber * 100 then
          Key := #0;
    end;
      

  7.   

    zswangII(伴水II)(伤心中)您好!我是初学者,实在是有好多不懂的地方,感谢您对我的帮助!!
    按你给的语句我运行了,可有一句出钷,再次请教,深表谢意!
    [Error] czblr1_1.pas(180): Undeclared identifier: 'TryStrToFloat'
    您说我应该怎么解决
      

  8.   

    //it's for Delphi6function TryStrToFloat(mStr: string; var mNumber: Extended): Boolean;
    var
      vCode: Integer;
    begin
      Val(mStr, mNumber, vCode);
      Result := vCode = 0;
    end;
      

  9.   

    zswangII(伴水II)(伤心中)您好!这个问题我终于解决了,感谢您的支持和帮助!!
    还有一个问题再请教您:
    按您说的我是实现了只能输入2位小数的目的,现在问题是:当光标走到一栏时(当然这档假如有数字是123.36)这时只有删除后才能输入数字,请问能否在有数据时不用删除而直接重新输入数字呢?要不然每次都要删除数字是比较麻烦的。
      

  10.   

    当然我只是建议
    你再碰到问题的时候不要先发帖子问
    先搜索相关主题
    比如你搜“DBGrid”就可以得到答案
    又可以节约分数
    不但如此还可以找到最佳的决绝方案
      

  11.   

    另外要学会看Delphi的Help和Source
    最好自己找到决绝办法,再找最佳方案
    还有什么意见欢迎交流,晚了我要睡罗