当AdoDataSet.Insert;时,此时并禁用DBGrid,当一禁用DBGrid,AdoDataSet.State值会把dsInsert状态,写上变为dsBrowse,如不禁用DBGrid不会发生此现像!!
求教了!

解决方案 »

  1.   

    禁用DBGrid的时候,把DBGrid的DataSource属性设置成nil试试!
      

  2.   

    先禁用DBGrid,
    再插入AdoDataSet.Insert
      

  3.   

    樓主是不是不想在DBGrid中錄入數據呀.為什麼要AdoDataSet.Insert;再禁用DBGrid呢.設置ReadOnly不能達到要求嗎?樓主把你要的目的說出來呀.
      

  4.   

    一、
    如果是ReadOnly的话!
    DBGrid就会滚动!
    那样就不行了!
    二、
    如果DBGrid.DataSource设为Nil也是不行的!!
      

  5.   

    如果是多條添加的話:
    可以用DBGrid.DataSet.DisableControl;
    try
      DBGrid.DataSet.Insert;
    finally
      DBGrid.DataSet.EnableControl;
    ennd;
    // 沒在Delphi環境下寫的, 可能有錯.
      

  6.   

    procedure TFm_Bases.DataSource_DataSetStateChange(Sender: TObject);
    begin
      inherited;
      if AdoDataSet_DataSet.State = dsBrowse then
        StatusBar_Info.Panels[1].Text := '浏览';
      if AdoDataSet_DataSet.State = dsInsert then
        StatusBar_Info.Panels[1].Text := '新增';
      if AdoDataSet_DataSet.State = dsEdit then
        StatusBar_Info.Panels[1].Text := '修改';
      ChangeButtonStatus;
    end;
    procedure TFm_Bases.ChangeButtonStatus;
    begin
      if (AdoDataSet_DataSet.IsEmpty)
        or (not AdoDataSet_DataSet.Active) then
        begin
          Action_Edit.Enabled := False;
          Action_Delete.Enabled := False;
          Action_Search.Enabled := False;
          Action_Filter.Enabled := False;
          Action_Check.Enabled := False;
          Action_UnCheck.Enabled := False;
        end
      else
        if AdoDataSet_DataSet.State in [dsInsert, dsEdit] then
          begin
            ChangeButtonStatusInsertOrEdit;
            Exit;
          end
        else
          if AdoDataSet_DataSet.State = dsBrowse then
            ChangeButtonStatusBrowse;
    end;