可能重複:
How to avoid TDbgrid scrolling when returning to a previous location如何將TDBGrid記錄視圖恢復到刷新前的狀態?
我正在尋找一種方式來保存和恢復德爾福TDBGrid
的垂直滾動位置已發生刷新之後。目前,網格會自行重置,以便所選記錄出現在記錄列表的中間。
首先,屬性LeftCol
和TopRow
似乎是解決方案,但只有LeftCol
的作品。 TopRow
值始終爲1,從不改變。它似乎是進入網格內部記錄緩衝區的位置,該位置設置爲網格中顯示的行數。也就是說,FBuffers似乎上下滑動,但TopRow
始終保持爲1。
我所看到的詳細示例是:
- 網格顯示11個記錄的
TClientDataSet
的,從記錄5,displayng依次記錄15 - 所選記錄光標位於記錄15(視圖中的最後一條記錄)。
- 該數據集通過鏈接到
TADODataSet
的TDataSetProvider
刷新。 (打開或.Refresh呼叫)。 - dataset.Locate方法用於在插入/刪除操作時保留實際選定的記錄。
- 網格的變化,使記錄15在中心,它是通過20
顯示記錄10有什麼可以保存/恢復/執行,使電網能夠恢復到原來的查看配置顯示記錄5-15與光標在同一選定的記錄,無論它出現在哪裏?
我可以在我的許多搜索試圖找到最接近的是,在Delphi 3.0解決了TopRow,LeftCol,這裏的一個問題:http://www.delphigroups.info/2/79/314206.html
通過DBGrids.pas洞穴探險不扣除我定位的方法緩衝區指針相對於底層數據集記錄。
我是弗朗索瓦的第一個環節的OP( 「如何避免?」)並在上個月實施了Sertac的解決方案(「尤其是這個答案」)。它爲我工作很好。 – RobertFrank 2012-01-10 00:32:35
我將「特別答案」納入我的解決方案。它工作得很好。我在發佈一個愚蠢的遊戲之前就發現了它,但非常感謝你指引我朝着正確的方向發展。 – cdburgerjr 2012-01-10 00:38:51