AGB  ·  Datenschutz  ·  Impressum  







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

Virtual TreeView Nodes anzeigen verbergen

Ein Thema von oki · begonnen am 20. Mär 2009 · letzter Beitrag vom 22. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 07:02
Moin,

hier mal kurz was ich will:
im VirtualStringTree von Mike versehe ich die einzelnen Nodes mit Checkboxen. Über einen Check-ToolButton möchte ich die Anzeige umschalten. Es soll zwei Anzeigemodi geben
- alle anzeigen
- nur ausgewählte anzeigen.

Daraus folgt, dass ich alle Nodes, deren Checkboxen den Status Checked = False haben im Modus "nur ausgewählte anzeigen" im Tree ausblenden möchte.

Kann mir jemand sagen, wo ich das am besten unterbringe?

Schon mal Dank für eure Mühe,

Gruß oki
42
  Mit Zitat antworten Zitat
generic

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

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 08:16
Das ist kein Problem, im Stammtisch Video #2 ist eine Suchdemo drin, welche Node ausblendet.

vst.IterateSubtree zum durchlaufen der Knoten verwenden und mit vst.isVisible[node]:= true | false die Knoten verstecken.

http://www.delphipraxis.net/internal...=817819#817819
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 09:01
Hi generic,

dank für die Antwort. Ich hatte mir parallel das PDF zum VirtualTree genauer zu Gemüte geführt und dabei die Eigenschaft NodeState gefunden. Genau wie du beschrieben hast verwende ich jetzt den Typ vsVisible der Nodes zum Ein-/Ausblenden.
Da ich das über einen zentralen Schalter mache kann ich den gesamten Tree einmal abarbeiten und die entsprechenden Nodes bearbeiten.
Hier mein Code:
Delphi-Quellcode:
procedure TSettingsStyleForm.VisualizeAllNodes(Value: Boolean);
var
  ANode: PVirtualNode;
  AData: ^TVTData;
begin
  ANode := VTree.GetFirst;
  if ANode = nil then
    Exit;
  try
    VTree.BeginUpdate;
    while not (ANode = nil) do begin
      AData := VTree.GetNodeData(ANode);
      if AData.DataType = snt_Param then begin // ich möchte dies nur für Nodes tun die meinem eigenen Typ snt_Param entsprechen
        if not Value then begin // nur die Nodes anzeigen, die in den eingeblendeten Checkboxen angewählt sind
          if ANode.CheckState = csUncheckedNormal then
            ANode.States := ANode.States - [vsVisible]
          else
            ANode.States := ANode.States + [vsVisible];
        end else
          ANode.States := ANode.States + [vsVisible]; // alle anzeigen
      end;
      ANode := VTree.GetNext(ANode);
    end;
  finally
    VTree.EndUpdate;
  end;
end;
Dank für deine Hilfe. Damit ist die Frage beantwortet,

Gruß oki
42
  Mit Zitat antworten Zitat
generic

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

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 11:14
Wenn du die Nodedaten (interne Struktur) direkt veränderst wird es früher oder später Probleme geben.

Am besten immer die Funktionen vom VST nutzen. Das sichert auch Kompatibilität .
Vor allem werden durch die Nutzung der VST Methoden die Ereignisse ausgelöst, was bei den internen Daten nicht der Fall ist.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 12:20
Hallo,

in dem Video wird mit folgender Funktion gearbeitet. Diese findest ungefähr ab Minute 5o bzw. 60 des Videos (glaube ich).

Delphi-Quellcode:
procedure TFDatenauswertung.SucheCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  Daten : TOAUMB256PLUS;
begin
  Daten := TOAUMB256PLUS(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter.Text='') or (pos(EDManFilter.Text, Daten.Ereignis)>0);
end;
[EDIT] Wenn man nicht richtig ließt, endeckt man später, das die antwort so eigendlich schon gegeben wurde.

Trotzdem

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
generic

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

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 13:09
Und der Source sogar verlinkt ist ;-)
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 20:22
Zitat von generic:
Wenn du die Nodedaten (interne Struktur) direkt veränderst wird es früher oder später Probleme geben.

Am besten immer die Funktionen vom VST nutzen. Das sichert auch Kompatibilität .
Vor allem werden durch die Nutzung der VST Methoden die Ereignisse ausgelöst, was bei den internen Daten nicht der Fall ist.
Hi generic,
im Moment fehlt mir etwas der Bezug zu meinem Code.
Was meinst du mit interner Struktur?
Wo greife ich auf diese zu?
Welche Probleme sind bei Zugriff auf PVirtualNode.NodeState zu erwarten?
Warum ist dann NodeState read/write?
Welche Funktion sollte ich deiner Meinung nach nutzen um einen Node unvisible zu machen?

Ich werd mir auch noch mal das Video reinziehen. Vielleicht geht mir dann ein Licht auf.

@Jens Hartmann: ich denke dieser Teil:
VST.IsVisible[Node] := soll wohl das Setzen der Visible-Eigenschaft über eine Funktion realisieren. Schaun mer ma.

Dank euch beiden und Gruß

oki
42
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 20:59
Mit dieser Funktion, führst du einen Vergleich durch.

Delphi-Quellcode:

//Das ist eigendlich jetzt die komplette Variante aus dem Video, hier die Suchfunkion
//eine Methode vom VST und verglichen wird die Eingabe aus dem Edit. (siehe Edit.Change)
procedure TFDatenauswertung.SucheCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  Daten : TOAUMB256PLUS;
begin
  Daten := TOAUMB256PLUS(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter.Text='') or (pos(EDManFilter.Text, Daten.Ereignis)>0);
end;


//Hier wird z.B. wie im Video die Eingabe in einem Edit als Suche verwendet

procedure TForm1.Edit1Change(Sender: TObject);
begin
  VST.IterateSubtree(nil, SucheCallback, nil); //Durch die Eingabe im Edit wird die Suchfunktion aktiviert
end;
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
generic

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

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 20. Mär 2009, 22:55
Zitat von oki:
Was meinst du mit interner Struktur?
Alles was in dem Record vom VirtualNode Datentyp ist.
Für diese Eigenschaften gibt es immer Funktionen im VST, die genutzt werden sollten.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Virtual TreeView Nodes anzeigen verbergen

  Alt 21. Mär 2009, 09:58
Hi generic,

gut zu wissen. Also lohnt es sich für jeden Parameter des TVirtualNode eine entsprechende Funktion zu suchen. Werd ich dann so machen.

Dank für die Info und Gruß

oki
42
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:22 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