怎么限制dbgrideh中某列只能输入数字之类的,最好在输入时就进行判断?

解决方案 »

  1.   

    在OnKeyPress里判断吧
    if not (key in [0..9,#8]) then
      key:=0;
      

  2.   

    procedure TTrainForm.DetailDataSourceDataChange(Sender: TObject;
      Field: TField);
    var
      Str:string;
    begin
      if field.Name='df_datetime' then
      begin
        str:=trim(detailadoquery.fieldbyname('df_datetime').AsString);
        if length(sm.Purge(str,['1'..'9',':']))>0 then
          showmessage('dsfadljl');
      end;
    end;程序出错是怎么回事?
      

  3.   

    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        if not(Dbgrid1.DataSource.DataSet.State in[dsInsert,dsEdit])then exit;
        if Key in[$30..$39] then
          ShowMessage('Number')
        else
        begin
          ShowMessage('Not Number');
          ...
       end;
    end;
      

  4.   

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