procedure TfrmMain.WeiTopTradeShow_dbgehExit(Sender: TObject);
begin
  //为了防止最后一次变化的没有设置,所以要退出表格的时候更新下最后一个
  //注意这是编辑状态的时候,比卢哥的速度大大地提升地干活,呵呵,以后就用这个思路了
  if frmClientDm.WeiPrintTopTradeShow_adoq.State = dsEdit then
  begin
    //ShowMessage('wokao');可以测试下如果数据没有更改的话这个事件是不会触发的,只有数据发生变化 才会出发这个事件的,delphi做的真是够人性化 真是不错
    //不管那列,只要是在编辑状态,退出这个dbgrideh的时候就提交,实在是太高,花费巨大脑汁,终于解决问题了
    frmClientDm.WeiPrintTopTradeShow_adoq.Post;
  end;
end;

 

-------------------------

其它的回答都没有上面我自己的思路好,这里也备份下 其它人的回答,有助于理解

楼上的正解。
或在按键事件中用回车键保存:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin
if (key=#13)and(DBGrid1.DataSource.DataSet.State=dsEdit) then
begin
DBGrid1.DataSource.DataSet.Post;
end;
end;

其它回答,都没有上面 我自己的思路好

Delphi(Pascal) code

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13)and(DBGrid1.DataSource.DataSet.State=dsEdit) then
DBGrid1.……
[/Quote]
这个吧,回车就可以,不过一般不推荐在表格中直接编辑数据

-------------------------------------------------

2012-05-23-------------add-----------------

如果是右键,不会触发onexit事件,所以也不会更新,草,还好dbgrideh有一个右键时候触发的事件,在这个事件中写下代码就可:

procedure TfrmMain.WeiTopTradeShow_dbgehContextPopup(Sender: TObject;
  MousePos: TPoint; var Handled: Boolean);
begin
  {右键的时候没有退出表格,不会触发onexit事件,所以在这里写下}
  if frmClientDm.TopTradeShow_adoq.State = dsEdit then
  begin
    //不管那列,只要是在编辑状态,退出这个dbgrideh的时候就提交,实在是太高,花费巨大脑汁,终于解决问题了
    frmClientDm.TopTradeShow_adoq.Post;
  end;
end;

图:

posted on 2012-02-18 22:08  del88  阅读(20)  评论(0编辑  收藏  举报