可能重复:
How to avoid TDbgrid scrolling when returning to a previous location
我正在寻找一种在刷新发生后保存和恢复Delphi TDBGrid
的垂直滚动位置的方法。目前,网格重置自身,以便所选记录显示在记录列表的中间。
首先,属性LeftCol
和TopRow
似乎是解决方案,但只有LeftCol
有效。 TopRow
值始终为1且永远不会更改。它似乎是网格内部记录缓冲区的一个位置,它被设置为网格中显示的行数。也就是说,FBuffers似乎上下滑动,但TopRow
始终保持为1。
我所看到的一个详细例子是:
TClientDataSet
的11条记录,从记录5开始,依次显示为记录15。TDataSetProvider
的{{1}}进行刷新。 (An .Open或.Refresh调用)。 是否可以保存/恢复/执行任何操作,以便网格可以恢复到原始查看配置,显示记录5-15,光标位于同一选定记录中,无论它出现在哪里?
我在很多搜索尝试中找到的最接近的问题是在Delphi 3.0中使用TopRow,LeftCol解决了这个问题:http://www.delphigroups.info/2/79/314206.html
通过DBGrids.pas进行深入研究并不是一种相对于基础数据集记录定位缓冲区指针的方法。
答案 0 :(得分:6)