可能重复:
返回到先前位置时如何避免TDbgrid滚动
我正在寻找一种方法来保存和恢复TDBGrid发生刷新后Delphi的垂直滚动位置.目前,网格重置自身,以便所选记录显示在记录列表的中间.
起初,性能LeftCol和TopRow似乎是解决方案,但只有LeftCol工作.该TopRow值始终为1,永不改变.它似乎是网格内部记录缓冲区的一个位置,它被设置为网格中显示的行数.也就是说,似乎FBuffers上下滑动,但TopRow始终保持为1.
我所看到的一个详细的例子是:
TClientDataSet,从记录5开始,依次显示记录15. TDataSetProvider链接到a进行刷新TADODataSet.(An .Open或.Refresh调用). 是否可以保存/恢复/执行任何操作,以便网格可以恢复到其原始查看配置,显示记录5-15,光标位于同一选定记录中,无论它出现在何处?
在我的许多搜索尝试中,我能找到的最接近的问题是使用TopRow,LeftCol在Delphi 3.0中解决的问题:http://www.delphigroups.info/2/79/314206.html
通过DBGrids.pas进行探讨并不是一种相对于底层数据集记录定位缓冲区指针的方法.