Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: VirtualStringTree Einsteigerhilfe

  Alt 7. Feb 2006, 20:10
Hallo Paule

Zitat von Paul Schmidt:
Könnt ihr mir vllt. mal ein einfaches Beispiel geben, wie ich z.B. 2 nodes in solch einen VirtualStringTree einfüge.
also: der root-node soll "Root" heißen und sein child "child".
Klar kann ich das, aber "einfach" ist das nicht gerade mit diese Komponente, dafür sehr performant.

Delphi-Quellcode:
var
  Form2: TForm2;

type
  PTreeData = ^TTreeData;
  TTreeData = record
    Caption: String;
  end;

implementation

{$R *.dfm}

// Funktion zum Hinzufügen eines Eintrags
function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode;
  ARecord: TTreeData): PVirtualNode;
var Data: PTreeData;
begin
  Result := AVST.AddChild(ANode);
  Data := AVST.GetNodeData(Result);
  Avst.ValidateNode(Result, False);
  Data^.Caption := ARecord.Caption;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  TreeData : TTreeData;
begin
  TreeData.Caption := 'Root';

  // Größe festlegen
  VirtualStringTree1.NodeDataSize := SizeOf(TTreeData);
  // Knoten einfügen:
  AddVSTStructure(VirtualStringTree1, nil, TreeData);

  TreeData.Caption := 'child';

  // Größe festlegen
  VirtualStringTree1.NodeDataSize := SizeOf(TTreeData);
  // Eintrag einfügen
  AddVSTStructure(VirtualStringTree1, VirtualStringTree1.GetFirst, TreeData);
end;

// Erst hier wird der Text zugewiesen!
procedure TForm2.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  Data: PTreeData;
begin
  // Zugewiesened Node ermitteln ...
  Data := VirtualStringTree1.GetNodeData(Node);
  // ... und dessen Caption zuweisen
  CellText := Data^.Caption;
end;

Zitat von Paul Schmidt:
PS: und bitte nicht hauen, wenn ich dumme Fragen stelle. Muss ja erstmal klein anfangen.
Keine Sorge, das macht keiner. Nur über die Suche wärst du sicher auch fündig geworden, daher das nächste Mal davor suchen, dann nimmt dir's garantiert keiner übel.
  Mit Zitat antworten Zitat