Powolne działanie komponentu TTreeView

Powolne działanie komponentu TTreeView
m_Lesiu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0
Kopiuj
var
   TV : TReeView;

1:

Kopiuj
   for i := 0 to TV.Items.Count - 1 do
   begin
     if TV.Items[ i ].Text = '1' then
     begin
     end;
   end;

2:

Kopiuj
   node := TV.Items.GetFirstNode;
   while node <> nil do
   begin
      if node.Level = 1 then
      begin

      end;
      node := node.GetNext;
   end;

Mam problem bo ten kawałek kodu wykonuje mi się bardzo powoli, w wersji 1 i 2. Wydaje mi się, że dostęp do itemów TreeView'a jest wolny i stąd ten problem. Czy ma ktoś pomysł jak przyspieszyć odczyt z TreeView'a?

znalazłem:
http://www.scalabium.com/faq/dct0110.htm
zastosowałem ale nie dużo pomogło

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
3

Zamienić standardową kontroklę TTreeView na TVirtualTreeView - jest nie dość, że szybszy, to jeszcze dużo bardziej rozbudowany.

m_Lesiu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0

nie bardzo mogę używać gotowych komponentów nie dostarczonych ze środowiskiem( dont ask why ). Więc muszę się przemęczyć z TTreeView.
Nieznacznie pomogło użycie for in

Kopiuj
for node in TreeView do
begin
      if node.Level = 1 then
      begin

      end;
end;
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

Raczej tego już nie przyspieszysz; Ewentualnie możesz spróbować wywoływać BeginUpdate i EndUpdate odpowiednio przed i po modyfikacjach, ale skoro już czytałeś o tym...

m_Lesiu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0

Jaram się tym komponentem jak ksiądz nowym ministrantem. Można polecić faktycznie dużo lepiej działa ogolnie jest mega o!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.