2011-12-21 22 views
6

Mam TDataSource, który jest wspierany przez TClientDataset związany z TStringGrid. Zrobiłem to, klikając prawym przyciskiem myszy na siatce, wybierając "Link to DB Datasource..." i wybierając DataSource. To ustawienie dla mnie w LiveBindings.Jak wyświetlić więcej niż 200 wierszy w TStringGrid za pomocą funkcji LiveBindings?

Po uruchomieniu aplikacji siatka wypełnia tylko 200 wierszy, mimo że w zestawie danych znajduje się 5000 rekordów.

Nie mogę znaleźć żadnej dokumentacji dotyczącej zmiany liczby wyświetlanych wierszy ani właściwego sposobu zezwalania użytkownikowi na przewijanie wszystkich danych.

Zrobiłem znaleźć zakodowanego wartość TBindScopeDBEnumerator.Create200 w jednostce Data.Bind.DBScope, a kiedy ją zwiększyć do 10000, widzę wszystkie 5000 wierszy w siatce, ale wydaje się to hack.

Jaki jest właściwy sposób wyświetlania ponad 200 wierszy w TStringGrid?

+0

dlaczego nie używać TDBGrid? – kobik

+0

@kobik - FireMonkey nie ma składnika TDBGrid ani żadnych komponentów stylu TDB. Zamiast tego używasz standardowych komponentów TEdit, TStringGrid z nową funkcją LiveBindings, która między innymi umożliwia powiązanie wartości standardowych kontrolek z wartościami pól bazy danych. – LachlanG

+0

Niestety, nie zdałem sobie sprawy, że jest to problem z FireMonkey ... :-P – kobik

Odpowiedz

3

Musisz zmienić TBindDBGridLink.BufferCount w chwili desygnaty od -1 do dowolnej wartości, którą potrzebujesz.

+2

Próbowałem zmienić tę wartość już w kodzie, w metodzie OnCreate formularza. Najwyraźniej było już za późno. Należy zmienić wartość w IDE w czasie projektowania, tak aby wartość była ustawiona podczas jej tworzenia. To szalone, że -1 oznacza 200. Dzięki za podpowiedź. –

+0

@lachlang Wydaje się, że dla xe6, które nie jest już ważne, wiesz o tym? –

5

Można zmienić wartość TBindDBGridLink.BufferCount na żądaną wartość, a następnie -1. Ale lepiej ustawić TBindDBGridLink.AutoBufferCount na True.

+1

ustawienie bufora ręcznie może naprawdę zjeść twoją pamięć, ale tak samo ładuje gigantyczne zbiory danych w żywych przypięciach. –