Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#19

Re: VST mit ca. 50.000 Datensätze verdammt langsam, warum???

  Alt 7. Dez 2009, 22:28
Zitat von daywalker299:
Achso...

Den String Vergleich mache ich deshalb weil die Splaten verschiebbar sind. Oder bleibt zur Laufzeit der ColumIndex gleich dem ColumIndex zur Entwurfszeit?
Wenn nicht, macht der String Vergleich schon Sinn, oder? Natürlich nur mit dem Break.
Nein, der ColumIndex bleibt der ColumIndex zur Entwurfszeit, auch wenn du zur Laufzeit die Spalten vertauschst.
.BeginUpdate und .EndUpdate empfiehlt sich nur, wenn du .RootNodeCount änderst (bzw über .AddChild Datensätze hinzufügst, was ich nicht empfehle)

Ich mache das immer so (mit einer Suchfunktion, ist immer ganz praktisch ):
Delphi-Quellcode:
type
  TMyTreeData = record
    Nr: Integer;
  end;
  PMyTreeData = ^TTreeData;

  ArrayOfInteger = array of Integer;

var
  Nutzdaten: array of TMeineSelbstDefiniertenNutzdaten;
  Ergebnis: ArrayOfInteger;

procedure foo;
begin
  Ergebnis := SucheInNutzdatenNachWort(Nutzdaten, Wort);

  VST.BeginUpdate;
  VST.Clear;
  VST.RootNodeCount := Length(Ergebnis);
  VST.EndUpdate;
end;

procedure Bla.OnVSTInitNode(...);
var
  Data: PMyTreeData;
begin
  Data := VST.GetNodeData(Node);
  Data^.Nr := Ergebnis[Node.Index];
end;

procedure Bla.OnVSTGetText(...);
var
  Data: PTreeData;
begin
  Data := VST.GetNodeData(Node);
  with Data^ do
    case ColumIndex of
      0: ColumText := Nutzdaten[Nr].Wert1;
      1: ColumText := Nutzdaten[Nr].Wert2;
      else ColumText := '';
    end;
end;
Du musst nur am Anfang deine Nutzdaten mit den Werten der Datenbank befüllen.
Wenn du willst kann ich dir auch noch eine schnelle Suchfunktion hier rein stellen.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat