AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls VirtualStringTree: wie kann ich nur Children von einem Parent anzeigen lassen?
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree: wie kann ich nur Children von einem Parent anzeigen lassen?

Ein Thema von ernschd · begonnen am 11. Aug 2011 · letzter Beitrag vom 16. Aug 2011
Antwort Antwort
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#1

AW: VirtualStringTree: wie kann ich nur Children von einem Parent anzeigen lassen?

  Alt 15. Aug 2011, 18:41
Ach so ... na dann ist es ja ganz einfach.

An der Stelle, wo das "blättern" stattfindet, setzt du den aktuellen Parent auf unsichtbar und den nächsten auf sichtbar.
Und das GetText-Event bekommt keine spezielle Logik ... einfach nur den Text rausgeben.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#2

AW: VirtualStringTree: wie kann ich nur Children von einem Parent anzeigen lassen?

  Alt 16. Aug 2011, 10:44
Hmm, wenn ich das so versuche, werden seltsamerweise die Nodes 1-5 nicht angezeigt, alle anderen schon. GetText gibt nur die Daten aus.
Delphi-Quellcode:
procedure zeigeNode(Index: Integer);
var Node : PVirtualNode;
begin
    Node := VST.GetFirst();
    while (Node.Index <> Index) do begin
        VST.IsVisible[Node] := False;
        Node := VST.GetNext(Node);
    end;
    VST.IsVisible[Node] := True;
end;
Nachtrag:
Wenn ich in der Methode, in der ich die Daten in den VST lade, die untere Schleife zum Erstellen und Befüllen der Child-Nodes weglasse, kann ich mit zeigeNode problemlos durchblättern.

Delphi-Quellcode:
Node := VST.AddChild(nil); // Node erstellen
VST.IsVisible[Node] := False; // ausblenden
Data := VST.GetNodeData(Node);
Data^.Nummer := WO_N^.Nummer;

while G <> NIL do begin
    fChild := VST.AddChild(Node); // Child-Node erstellen
    GerData := VST.GetNodeData(fChild); // Daten in Node eintragen
    GerData^.Text := G^.Text; // Einträge kopieren
    G := G^.GNext; // nächster Eintrag
end;

Geändert von ernschd (16. Aug 2011 um 11:14 Uhr) Grund: Test hat neue Erkenntnisse geliefert
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

AW: VirtualStringTree: wie kann ich nur Children von einem Parent anzeigen lassen?

  Alt 16. Aug 2011, 11:08
Der Code ist etwas unschön (birgt AV's) und unlogisch.
Probiers mal so:
Delphi-Quellcode:
procedure ShowNodes(AIndex : Integer);
var
  Node : PVirtualNode;
begin
  Node := VST.GetFirst;
  while Assigned(Node) do
  begin
    VST.IsVisible[Node] := Node.Index = AIndex;
    Node := VST.GetNextSibling(Node); //so bleibst du in der obersten Ebene
  end;
end;
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#4

AW: VirtualStringTree: wie kann ich nur Children von einem Parent anzeigen lassen?

  Alt 16. Aug 2011, 11:16
So funktionierts!

Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz