Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   VST Childnode an eine Node dranhängen (https://www.delphipraxis.net/200026-vst-childnode-eine-node-dranhaengen.html)

Bünni 12. Mär 2019 14:15

VST Childnode an eine Node dranhängen
 
Für heute habe ich noch eine letzte Frage. Vermutlich die letzte. Wie hänge ich eine Childnode an eine Node dran?
Ich lade meine Daten alle in Klasseninstanzen, diese wieder alle in eine generic ObjectList.

Im InitNode, FreeNode Event, GetText und allen anderen initialisiere ich, zeige an und gebe frei.
Wie schalte ich jetzt eine Childnode unter eine Node auf, sodass ich die Node mit + und - auf- und zuklappen kann?

TiGü 12. Mär 2019 14:32

AW: VST Childnode an eine Node dranhängen
 
Zeig mal dein InitNode.

Bünni 12. Mär 2019 14:39

AW: VST Childnode an eine Node dranhängen
 
In meinem InitNode-Event steht eine Zeile.
Delphi-Quellcode:
procedure TKSListEvents.InitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
 Node.SetData<TKSData>(KSData[Node.Index]);
end;
TKSData ist die Klassenimplementierung mit Gettern und Settern von der die Klasseninstanzen erstellt werden die dann in meine ObjectList kommen.
KSData ist die angesprochene generic TKSData ObjectList.

TiGü 12. Mär 2019 15:05

AW: VST Childnode an eine Node dranhängen
 
Anhand welcher Kriterien werden Children gebildet?
Also wodurch weißt du in den einzelnen Instanzen von TKSData, dass sie noch Kinder haben?

Ich nehme an, du setzt anhand der Länge von KSData die RootNodeCount des VST?
Es gibt sowas ähnliches mit ChildCount:

Delphi-Quellcode:
var
  Node: PVirtualNode;
  I: Integer;
begin
  for I:=1 to 100 do
  begin
    Node:=VST.AddChild(nil);
    VST.ChildCount[Node]:=10;
  end;
end;

Bünni 12. Mär 2019 15:31

AW: VST Childnode an eine Node dranhängen
 
Zitat:

Anhand welcher Kriterien werden Children gebildet?
Jede KSData-Instanz hat ein Property welches gesetzt ist oder nicht.

Zitat:

Ich nehme an, du setzt anhand der Länge von KSData die RootNodeCount des VST?
Mit einer For-Schleife erzeuge ich meine Klasseninstanzen. Am Ende jeder For-Schleife füge ich die Klasseninstanz der ObjectList hinzu (VST.AddChild usw. benutze ich nicht) und setze die RootNodeCount.

Aviator 12. Mär 2019 22:15

AW: VST Childnode an eine Node dranhängen
 
Häng im InitNode Event den Status ivsHasChildren an InitialStates an. Hierdurch erhälst du das + vor der Node. Wenn du dann die Node per Klick auf das + öffnen willst, wird OnInitChildren aufgerufen. Dort kannst du dann den ChildCount angeben. Das ist der richtige Weg. AddChild() sollte man nicht verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz