如何在刷新之前将TDBGrid记录视图恢复到条件?

时间:2012-01-09 19:15:55

标签: delphi tdbgrid

  

可能重复:
  How to avoid TDbgrid scrolling when returning to a previous location

我正在寻找一种在刷新发生后保存和恢复Delphi TDBGrid的垂直滚动位置的方法。目前,网格重置自身,以便所选记录显示在记录列表的中间。

首先,属性LeftColTopRow似乎是解决方案,但只有LeftCol有效。 TopRow值始终为1且永远不会更改。它似乎是网格内部记录缓冲区的一个位置,它被设置为网格中显示的行数。也就是说,FBuffers似乎上下滑动,但TopRow始终保持为1。

我所看到的一个详细例子是:

  • 网格显示TClientDataSet的11条记录,从记录5开始,依次显示为记录15。
  • 所选记录光标位于记录15(视图中的最后一条记录)。
  • 数据集通过链接到TDataSetProvider的{​​{1}}进行刷新。 (An .Open或.Refresh调用)。
  • dataset.Locate方法用于在插入/删除时保留实际选定的记录。
  • 网格发生变化,以便记录15位于中心,并显示记录10到20。

是否可以保存/恢复/执行任何操作,以便网格可以恢复到原始查看配置,显示记录5-15,光标位于同一选定记录中,无论它出现在哪里?

我在很多搜索尝试中找到的最接近的问题是在Delphi 3.0中使用TopRow,LeftCol解决了这个问题:http://www.delphigroups.info/2/79/314206.html

通过DBGrids.pas进行深入研究并不是一种相对于基础数据集记录定位缓冲区指针的方法。

1 个答案:

答案 0 :(得分:6)