DBGRID或DBGRIDEH控件,在单元格内容发生改变时有相对应的的事件吗,我看了看,好像只有COLEXIT事件,是不是只有单元格焦点移开后GRID再把数据写到对应的数据集中?

解决方案 »

  1.   

    单元格焦点移开后GRID是否立即把数据写到对应的数据集中, 要看你的DATASET的LOCKTYPE属性。
    一般默认是立即更新数据源。并且会触发对应DATASOURCE的ONDATACHANGE事件,
    你可以在这个事件里加入你想做的处理。
      

  2.   

    DBGRID或DBGRIDEH 单元格内容发生改变时最好对它相关连的TDataSet(ADOQuery 或 ADOTable)的事件进行操作如
       ADOQueryBeforePost,ADOQueryAfterPost 等,可根据需要而进行选择
      

  3.   

    改变ADOQuery1的模式属性LOCKTYPE :=ltBatchOptimistic;用一个按钮来执行批量更新
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOQuery1.UpdateBatch();
    end;最好还使用事务,被免更新出错回滚procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
      ADOConnection1.BeginTrans ;     //开始事务
      ADOQuery1.UpdateBatch();
      ADOConnection1.CommitTrans;     //提交事务
      except
        showmessage('更新出错');
        ADOConnection1.RollbackTrans ;   //回滚事务
    end;