Virtual TreeView add node

0

Witam mam następujący problem. Piszę program który ma za zadanie wyświetlić mi listę firm pobraną z bazy MSSQL. Do komunikacji używam ADO a jako listę chciałem wykożystać Virtual TreeView. Mam do wczytania ok 25 000 rekordów z bazy i zastanawiam się jak przyśpieszyć wczytywanie ich do VT. Oto procedura której używam do wczytania rekordów z bazy:

var
  Wskaznik : PVirtualNode;
  Data     : PWirtualnyRekord;
begin
Dat.CommandText := 'Select * from Accounts';
Dat.Open;
Dat.First;
VirtualStringTree1.BeginUpdate;
while not Dat.Eof do begin
VirtualStringTree1.RootNodeCount:=VirtualStringTree1.RootNodeCount+1;
Wskaznik := VirtualStringTree1.GetLast;
Data     := VirtualStringTree1.GetNodeData(Wskaznik);
Data.Caption[0]:= Dat.FieldByName('account_id').AsString;
Data.Caption[1]:= Dat.FieldByName('name').AsString;
Data.Caption[2]:= Dat.FieldByName('address').AsString;
Data.Caption[3]:= Dat.FieldByName('postal_code').AsString;
Data.Caption[4]:= Dat.FieldByName('city').AsString;
Data.Caption[5]:= Dat.FieldByName('region_text').AsString;
Data.Caption[6]:= Dat.FieldByName('main_telephone').AsString;
Data.Caption[7]:= Dat.FieldByName('main_email').AsString;
Data.Caption[8]:= Dat.FieldByName('industry_text').AsString;
Wskaznik.States := Wskaznik.States +[vsInitialUserData];
Dat.Next;
VirtualStringTree1.EndUpdate;
Dat.Close;
end;

Wczytanie takiej ilości danych zajmuje 10-12 sekund nie jest to dużo ale jak dam coś takiego:

VirtualStringTree1.RootNodeCount := 25000;

to 25 000 rekordów wyświetla mi się w ok 1 sek. Czy da się jakoś przyśpieszyć ten proces może ja coś źle robie z tym dodawaniem zaznaczam że wcześniej nie używałem VT. Proszę o pomoc i podpowiedź w tej sprawie.

0
Tree.BeginUpdate;
//Tworzenie wskaźników
Tree.InsertNode(nil, amAddChildLast, wskaznik);
Tree.EndUpdate;

Powinno być szybsze.. Ale głowy nie dam. :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1