2012-01-09 20 views
5

thể trùng lặp:
How to avoid TDbgrid scrolling when returning to a previous locationLàm cách nào để khôi phục chế độ xem bản ghi TDBGrid về điều kiện trước khi làm mới?

Tôi đang tìm kiếm một cách để lưu và khôi phục lại vị trí di chuyển dọc của một Delphi TDBGrid sau khi làm mới đã xảy ra. Hiện tại, lưới sẽ tự đặt lại để bản ghi đã chọn xuất hiện ở giữa danh sách các bản ghi.

Lúc đầu, các thuộc tính LeftColTopRow dường như là giải pháp, nhưng chỉ LeftCol hoạt động. Giá trị TopRow luôn là 1 và không bao giờ thay đổi. Nó dường như là một vị trí vào bộ đệm bản ghi bên trong của lưới, được đặt thành số hàng hiển thị trong lưới. Đó là, có vẻ như FBuffers trượt lên và xuống, nhưng TopRow vẫn là 1 ở tất cả các lần.

Một ví dụ cụ thể về những gì tôi nhìn thấy là:

  • Lưới hiển thị 11 hồ sơ của một TClientDataSet, bắt đầu với kỷ lục 5, displayng tuần tự để ghi lại 15.
  • Con trỏ kỷ lục được lựa chọn là trên bản ghi 15 (bản ghi cuối cùng trong chế độ xem).
  • Tập dữ liệu được làm mới thông qua một TDataSetProvider được liên kết với một số TADODataSet. (Một .Open hoặc .Refresh gọi).
  • Tập dữ liệu.Lệnh pháp được sử dụng để giữ lại bản ghi đã chọn thực tế khi đối mặt với việc chèn/xóa.
  • Những thay đổi lưới điện nên kỷ lục 15 là ở trung tâm và nó được hiển thị hồ sơ 10 đến 20.

Có điều gì đó có thể được lưu/phục hồi/thực hiện sao cho lưới có thể được phục hồi ban đầu của nó xem cấu hình hiển thị các bản ghi 5-15 với con trỏ trên cùng một bản ghi đã chọn, bất cứ nơi nào nó xuất hiện?

Điều gần nhất tôi có thể tìm thấy trong nhiều nỗ lực tìm kiếm của tôi là một vấn đề đã được giải quyết trong Delphi 3.0 với TopRow, LeftCol, ở đây: http://www.delphigroups.info/2/79/314206.html

Spelunking qua DBGrids.pas không lưới cho tôi một phương pháp định vị các con trỏ đệm liên quan đến các bản ghi dữ liệu cơ bản.

Trả lời

6

Có vẻ như là những câu hỏi này sẽ cho bạn câu trả lời: (. Đặc biệt this answer)
How to avoid TDbgrid scrolling when returning to a previous location
Delphi - restore actual row in DBGrid

+0

tôi là OP của liên kết đầu tiên của François ("Làm thế nào để tránh ...") và thực hiện giải pháp của Sertac ("đặc biệt là câu trả lời này") tháng trước. Nó đã làm việc tuyệt vời cho tôi. – RobertFrank

+0

Tôi kết hợp câu trả lời "đặc biệt này" vào giải pháp của mình. Nó hoạt động rất tốt. Loại mong muốn tôi đã phát hiện ra nó trước khi đăng một bản dupe, nhưng cảm ơn rất nhiều vì đã chỉ cho tôi đúng hướng. – cdburgerjr

Các vấn đề liên quan