Delphi - 在dbGrid中更新字段,而选择在另一行上

时间:2010-06-29 07:46:04

标签: delphi dbgrid

我有一个带X行的dbGrid。 我想用计时器更新第二行中的字段值(例如,显示倒计时)。 这没问题,但我希望能够更改所选行并继续更新第二行。 当网格中的选择发生变化时,连接数据集的当前记录也会发生变化,这也是一个问题,因为计时器中的代码指向所选记录。

怎么能解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分:4)

如果连接到dbGrid的数据集是TClientDataSet,则可以从网格的数据集中删除另一个TClientDataSet并克隆数据。

由于两个数据集都指向相同的数据,因此您可以更改克隆数据集中的值,并且该数据将显示在dbGrid中,而不会篡改dbGrids数据集。

答案 1 :(得分:0)

尝试这种非常简单的方法:

if DataSource1.DataSet.State in dsEditModes then
  DataSource1.DataSet.Post; { or Cancel, depends on your needs }
try
  DataSource1.DisableControls;
  Bookmark := ClientDataSet1.GetBookmark;
  try
    if ClientDataSet1.Locate(SecondRowId, 'Id', []) then
    begin
      ClientDataSet1.Edit;
      ClientDataSet1['Counter'] := Counter;
      ClientDataSet1.Post;
    end;
    ClientDataSet1.GotoBookmark(Bookmark);
  finally
    CLientDataSet1.FreeBookmark(Bookmark);
  end;
finally
  DataSource1.EnableControls;
end;
相关问题