aczkolwiek zależy co w tych danych jest i ile jest pól/typy danych/dane/itd.
Te dane to przeważnie stringi i integery.
30K to mi się do grida ładuje w ok. sekundę
Weź pod uwagę to, że grid ma obsłużone zdarzenia OnCellPain - wiersz wypełniany jest kolorem w zależności od danych w kolumnie np. STATUS = 'OPŁACONE' (zielony); STATUS = 'NIEOPŁACONE' (czerwony)
No i co z tego? Wystaw sobie, że ja takie rzeczy robię z dynamicznym obliczaniem warunków dla wiersza przez co uzyskuje efekt analogiczny do Excelowego formatowania warunkowego.
Różnica taka, że user może sam sobie ustawić warunki i styl wyróżniania danych. I jakoś nie mam problemów wydajnościowych, a narzut w stosunku do zwykłego sprawdzenia warunku i zmiany kolory czcionki/tła jest znacznie większy.
itp. w gridzie malowanie strasznie zjada pamięć, to jest też m.in powód, dla którego chcę przejść na virtuala. Dodatkowo na uwzględnieniu trzeba mieć słabsze komputery, na których aplikacja będzie uruchamiana (a tak właśnie jest, bo program działa u różnych klientów, na różnych komputerach).
To bez znaczenia, a jak Ci "w gridzie malowanie strasznie zjada pamięć" to po prostu coś spartoliłeś i tyle - albo kontrolka partoli...
Malowane są tylko te wiersze, które są widoczne. po drugie - oczywiście przez operacjami typu otwieranie danych, odświeżanie, filtrowanie, wyszukiwanie (locate) włączasz DataSet.DisableControls?
Chodzi o taką konstrukcję:
Kopiuj
DataSet.DisableControls;
try
DataSet.CloseOpen;
finally
DataSet.EnableControls;
end;
Jeśli tego nie robisz, to czym prędzej zacznij.
Sprawdź wyniki i zamelduj o efektywności poprawek - ile będzie x szybciej? Tak na oko, to ze 4...
(w standardowym TDBGrid) bo i tak takich danych nie wyświetlisz.
Używam XDBGrid.
OK, ale ja go nie używam i instalować dema nie będę. Tak więc użyj zwykłego DBGrida, albo z DevExpress Quantum Grid, bo to mój podstawowy ;-)