2011-12-21 15 views
6

Tôi có một số TDataSource được hỗ trợ bởi TClientDataset được liên kết với số TStringGrid. Tôi đã làm điều này bằng cách nhấp chuột phải vào lưới, chọn "Link to DB Datasource..." và chọn Nguồn dữ liệu. Điều này thiết lập LiveBindings cho tôi.Cách hiển thị hơn 200 hàng trong TStringGrid bằng LiveBindings?

Khi tôi chạy ứng dụng, lưới chỉ lấp đầy 200 hàng, mặc dù có 5000 bản ghi trong tập dữ liệu.

Tôi không thể tìm thấy bất kỳ tài liệu nào về cách thay đổi số hàng được hiển thị hoặc cách thích hợp để cho phép người dùng cuộn qua tất cả dữ liệu.

Tôi đã tìm giá trị mã hóa 200 được mã hóa cứng trong đơn vị Data.Bind.DBScope và khi tôi tăng nó lên 10000, tôi thấy tất cả 5000 hàng trong lưới, nhưng điều này có vẻ như là hack.

Cách thích hợp để hiển thị hơn 200 hàng trong TStringGrid là gì?

+0

tại sao không sử dụng TDBGrid? – kobik

+0

@kobik - FireMonkey không có thành phần TDBGrid hoặc bất kỳ thành phần kiểu TDB nào. Thay vào đó, bạn sử dụng các thành phần TEdit, TStringGrid chuẩn với tính năng LiveBindings mới, trong số những thứ khác cho phép bạn liên kết các giá trị của các điều khiển chuẩn với các giá trị của các trường cơ sở dữ liệu. – LachlanG

+0

xin lỗi đã không nhận ra đó là một vấn đề FireMonkey ở nơi đầu tiên ... :-P – kobik

Trả lời

3

Bạn cần thay đổi TBindDBGridLink.BufferCount tại designtime từ -1 thành bất kỳ giá trị nào bạn cần.

+2

Tôi đã thử thay đổi giá trị này đã có trong mã, trong phương thức OnCreate của biểu mẫu. Rõ ràng, đã quá muộn. Bạn phải thay đổi giá trị trong IDE tại thời gian thiết kế sao cho giá trị được đặt khi nó được tạo. Đó là điên mà -1 có nghĩa là 200. Cảm ơn gợi ý. –

+0

@ lachlang Có vẻ như đối với xe6 không hợp lệ nữa, bạn có biết về điều đó không? –

5

Bạn có thể thay đổi TBindDBGridLink.BufferCount cho giá trị bạn muốn thay vì -1. Nhưng tốt hơn là đặt TBindDBGridLink.AutoBufferCount thành True.

+1

thiết lập buffercount bằng tay thực sự có thể ăn bộ nhớ của bạn, nhưng do đó tải bộ dữ liệu khổng lồ trong livebindings. –