Thema: Delphi VST / Suche im VST

Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#9

Re: VST / Suche im VST

  Alt 13. Feb 2008, 16:01
Yup, deswegen. Den Typecast nach TMeinTyp brauchst du auch nicht, da du in der Regel eine Zeiger-Variable von TMeinTyp hast, die du als NodeData verwendest.

Hier noch ein Beispiel mit IterateSubTree (was ich bevorzuge, eben weil es um längen schneller ist):
Delphi-Quellcode:
interface

type
  TMeinTyp = record
    Titel: WideString;
    Foo: Integer;
  end;
  PMeinTyp = ^TMeinTyp;

  TForm1 = class (TForm)
    // ...
  private
    FFoundNode: PVirtualNode;
    procedure ItTree_CallBack (Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
    // ...
  public
    // ...
  end;

// ...

implementation

// ...

procedure TForm1.ItTree_CallBack (Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  NodeData: PMeinTyp;
begin
  NodeData := Sender.GetNodeData (Node);
  if (NodeData^.Titel = TMeinTyp (Data).Titel) then
    begin
      Sender.Focused[Node] := TRUE;
      FFoundNode := Node;
      Abort := TRUE;
    end;
end;

procedure TForm1.Button1Click (Sender: TObject);
var
  SuchDaten: PMeinTyp;
begin
  New (SuchDaten);
  try
    SuchDaten^.Titel := Edit1.Text;
    FFoundNode := nil;
    MeinVST.IterateSubTree (nil, ItTree_CallBack, Pointer(SuchDaten));
    if Assigned (FFoundNode) then
      ShowMessage ('Eintrag gefunden')
    else ShowMessage ('Eintrag nicht gefunden');
  finally
    Dispose (SuchDaten);
  end;
end;
  Mit Zitat antworten Zitat