Moin zusammen,
mit diesen beiden Proceduren, filtere ich über ein VST. Die Proceduren stammen aus dem VST Videotutorial vom Stammtisch. Die Daten liegen in einer Klasse TOData.
Delphi-Quellcode:
procedure Tfrm_main.edt_searchChange(Sender: TObject);
begin
vst_daten.IterateSubtree(nil, SearchDataCallback, nil);
end;
procedure Tfrm_main.SearchDataCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
Daten : TOData;
begin
Daten := TOData(vst_daten.GetNodeData(Node)^);
vst_daten.IsVisible[node] := (edt_search.Text = '')
or (pos(LowerCase(edt_search.Text), LowerCase(Daten.suchfeld)) > 0);
end;
Ich lese Daten aus einer Textdatei aus und stelle sie ins VST. Das geht verdammt schnell
Sobald man im Editfeld etwas einträgt, schaut er ins VST und lässt nur noch die Datensätze sichtbar, die dem Suchbegriff entsprechen. Siehe Prozeduren.
Bei einer Datenmenge von ca. 2000 geht die Aktualisierung der VST Ansicht noch recht schnell. Aber bei 42000 Datensätzen ist die Aktualisierung des VSTs sehr langsam und träge und der Benutzer muss auf die weitere Eingabe ins Editfeld warten.
Wie könnte man den Filter optimieren? Welche Möglichkeiten biete das VST?
Eventuelle Alternative (keine Ahnung, ob es geht): Daten in ein DataSet zu laden, und dann mit
SQL Befehlen zu filtern.
Danke im Voraus
Sven