2012-01-09 56 views
5

可能重複:
How to avoid TDbgrid scrolling when returning to a previous location如何將TDBGrid記錄視圖恢復到刷新前的狀態?

我正在尋找一種方式來保存和恢復德爾福TDBGrid的垂直滾動位置已發生刷新之後。目前,網格會自行重置,以便所選記錄出現在記錄列表的中間。

首先,屬性LeftColTopRow似乎是解決方案,但只有LeftCol的作品。 TopRow值始終爲1,從不改變。它似乎是進入網格內部記錄緩衝區的位置,該位置設置爲網格中顯示的行數。也就是說,FBuffers似乎上下滑動,但TopRow始終保持爲1。

我所看到的詳細示例是:

  • 網格顯示11個記錄的TClientDataSet的,從記錄5,displayng依次記錄15
  • 所選記錄光標位於記錄15(視圖中的最後一條記錄)。
  • 該數據集通過鏈接到TADODataSetTDataSetProvider刷新。 (打開或.Refresh呼叫)。
  • dataset.Locate方法用於在插入/刪除操作時保留實際選定的記錄。
  • 網格的變化,使記錄15在中心,它是通過20

顯示記錄10有什麼可以保存/恢復/執行,使電網能夠恢復到原來的查看配置顯示記錄5-15與光標在同一選定的記錄,無論它出現在哪裏?

我可以在我的許多搜索試圖找到最接近的是,在Delphi 3.0解決了TopRow,LeftCol,這裏的一個問題:http://www.delphigroups.info/2/79/314206.html

通過DBGrids.pas洞穴探險不扣除我定位的方法緩衝區指針相對於底層數據集記錄。

回答

6
+0

我是弗朗索瓦的第一個環節的OP( 「如何避免?」)並在上個月實施了Sertac的解決方案(「尤其是這個答案」)。它爲我工作很好。 – RobertFrank 2012-01-10 00:32:35

+0

我將「特別答案」納入我的解決方案。它工作得很好。我在發佈一個愚蠢的遊戲之前就發現了它,但非常感謝你指引我朝着正確的方向發展。 – cdburgerjr 2012-01-10 00:38:51