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;
图:
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/archive/2012/02/18/2357682.html