AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeView: Node Expanded hinzufügen

Ein Thema von KingIR · begonnen am 13. Jan 2008 · letzter Beitrag vom 13. Jan 2008
Antwort Antwort
Benutzerbild von KingIR
KingIR

Registriert seit: 19. Feb 2006
81 Beiträge
 
Delphi 2006 Professional
 
#1

VirtualTreeView: Node Expanded hinzufügen

  Alt 13. Jan 2008, 11:30
Hallihallo,

ich würde gerne einzelne Nodes meiner VTW schon direkt beim Hinzufügen Expanded haben.

Ich füge meine Nodes über AddChild bzw. InsertNode ein. Ich weiß, dass das nicht der bevorzugte Weg ist, aber da die Nodes alle erst nach und nach eintreffen und ich vorher keinerlei Informationen über Anzahl oder Art habe, ist das so für mich einfacher als im Hintergrund die komplette Struktur zu modellieren und dann "echt virtuell" an die VTW zu übergeben.

Jedenfalls sind einige Knoten mit einem Flag versehen, dass dazu führen soll, dass sie gleich ausgeklappt bzw. Expanded dargestellt werden.

Folgendes habe ich schon probiert, klappt jedoch leider nicht (Nodes bleiben alle eingeklappt):

Delphi-Quellcode:
// Meine OnInitNode-Prozedur:

procedure TTrillListMgr.TV_OnInitNode(Sender: TBaseVirtualTree; ParentNode,
  Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
  NodeData: PListNodeData;
begin
  // ... NodeData ermitteln und überprüfen ...

  if (NodeData sagt dass dieses Element Children haben wird) then
  begin
    Include(InitialStates, ivsHasChildren);
  end;

  if (NodeData sagt dass dieses Element Expanded sein soll) then
  begin
    Include(InitialStates, ivsExpanded);
  end;

  Sender.InvalidateNode(Node);
end;
Die Prozedur wird auch korrekt aufgerufen und die States werden korrekt gesetzt. OnInitChildren verwende ich nicht, da ich ja nicht weiß wieviele Childs die Node haben wird. Direkt nach dem Hinzufügen der Nodes mit AddChild TV.Expanded[NewNode] auf True zu setzen bringt auch nichts.

Mein Verdacht ist dass ich da mit der Reihenfolge der Events irgendwas noch nicht so ganz verstanden habe, daher HILFE!!

Oder ist das alles Mist was ich da versuche und ich sollte doch den "echt virtuellen" Weg über einen Datenbaum im Hintergrund gehen...? Da habe ich dann nur auch das Problem, dass sich die Anzahl der Childs ständig ändert und ich Probleme bekomme nur aus dem Node.Index, der mit dem OnInitChild-Event eintrifft, den richtigen "Datensatz" für die Node zu ermitteln, vor allem da der Index sich ja zB durch Löschen von Elementen ändert...

Vielen Dank für jegliche Hilfe schonmal
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: VirtualTreeView: Node Expanded hinzufügen

  Alt 13. Jan 2008, 21:16
Zitat:
AddChild TV.Expanded[NewNode] auf True zu setzen bringt auch nichts.
wenn du addchild aufrufst,
wird die oninitnode procedure nicht sofort ausgeführt.
dies kannst du aber forcieren.
mir fällt nur gerade nicht die entsprechende methode ein.
erst nach dem erfolgten init kannst du dann deinen node auf expanded setzen.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#3

Re: VirtualTreeView: Node Expanded hinzufügen

  Alt 13. Jan 2008, 21:32
von den internen states würde ich die finger lassen.
das gibt interessante seiten effekte.

du solltest mit über die funktionen gehen:
Delphi-Quellcode:
node:=vst.addchild(nil);

vst.expanded[node]:=true;
oder
vst.fullexpand(node);
allerdings kannst du erst aufklappen, wenn was zum aufklappen da ist.
sprich du musst erst alle childs einfügen und dann aufklappen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von KingIR
KingIR

Registriert seit: 19. Feb 2006
81 Beiträge
 
Delphi 2006 Professional
 
#4

Re: VirtualTreeView: Node Expanded hinzufügen

  Alt 13. Jan 2008, 21:48
Zitat von generic:
von den internen states würde ich die finger lassen.
das gibt interessante seiten effekte.
Hab auch nur die InitialStates verändert, nicht die internen ... dafür ist OnInitNode ja unter anderem da

Zitat:
allerdings kannst du erst aufklappen, wenn was zum aufklappen da ist.
Juhu, das war der entscheidende Tipp Hätte ich ja auch selber drauf kommen können. Viielen Dank jedenfalls, funzt nun einwandfrei!
  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 08:40 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