AGB  ·  Datenschutz  ·  Impressum  







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

VST alle Hidden Rows wieder einblenden

Ein Thema von richard_boderich · begonnen am 10. Mär 2008 · letzter Beitrag vom 10. Mär 2008
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

VST alle Hidden Rows wieder einblenden

  Alt 10. Mär 2008, 07:29
Moin

Ich habe mit InterateSubtree mehrere Nodes ausgeblendet. Nun möchte ich diese wieder einblenden. Also er soll wieder alle Einträge
anzeigen. Ich könnte das ja über ein zweites Callback machen, jedoch scheint mir diese Vorgehensweise sehr aufwendig.
Gibt es eventuell eine Procedure oder Function die alle Einträge wieder anzeigt. Vst.showallnodes oder sowas. Ich habe schon versucht die Callback Procedure-Definition zu ändern um Nutzer-Variablen mitgeben zu können, die die Ausblendungskriterien im Callback steuern sollen, bin jedoch gescheitert.

Da ich nach einigen Kriterien Nodes ausblenden will, müsste ich ja für jeden Fall ein eigenes Callback samt Umkehrcallback definieren?

mfG Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: VST alle Hidden Rows wieder einblenden

  Alt 10. Mär 2008, 07:39
Zitat von richard_boderich:
... Ich habe schon versucht die Callback Procedure-Definition zu ändern um Nutzer-Variablen mitgeben zu können, die die Ausblendungskriterien im Callback steuern sollen, bin jedoch gescheitert. ...
Hai Richard,

der Callbackprocedure wird doch ein Pointer übergeben.
procedure HideNodes(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean); Du kannst jetzt ja z.B. ein Integer in den Pointer casten und darüber die Auswertung machen.
Delphi-Quellcode:
  vst.BeginUpdate;
  try
    vst.IterateSubtree(NIL, HideNodes, Pointer(2), [], True);
  finally
    vst.EndUpdate;
  end;
Delphi-Quellcode:
procedure TFrm_Objektliste.HideNodes(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Data: Pointer; var Abort: Boolean);
begin
  if (Integer(Data) = 0) then // Alle Anzeigen
  begin
      Sender.IsVisible[node] := True;
  end;

  if (Integer(Data) = 2) then
  begin
    if (Irgendeinvergleich) then
    begin
      Sender.IsVisible[node] := False;
    end;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: VST alle Hidden Rows wieder einblenden

  Alt 10. Mär 2008, 07:58
Mensch Danke Sharky

Manchmal sieht man die einfachsten Lösungen nicht. Funktioniert alles bestens. Eine kleine Fragen sei noch gestattet.
Kannst du mir Sagen, welche Bedeutung der Filterparameter im InterateSubtree Funktionsaufruf hat?

mfG Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: VST alle Hidden Rows wieder einblenden

  Alt 10. Mär 2008, 08:35
Zitat von richard_boderich:
... welche Bedeutung der Filterparameter im InterateSubtree Funktionsaufruf hat? ...
Ein Blick in den Sourcecode sagt:

Delphi-Quellcode:
function TBaseVirtualTree.IterateSubtree(Node: PVirtualNode; Callback: TVTGetNodeProc; Data: Pointer;
  Filter: TVirtualNodeStates = []; DoInit: Boolean = False; ChildNodesOnly: Boolean = False): PVirtualNode;
Delphi-Quellcode:
  TVirtualNodeState = (
    vsInitialized, // Set after the node has been initialized.
    vsChecking, // Node's check state is changing, avoid propagation.
    vsCutOrCopy, // Node is selected as cut or copy and paste source.
    vsDisabled, // Set if node is disabled.
    vsDeleting, // Set when the node is about to be freed.
    vsExpanded, // Set if the node is expanded.
    vsHasChildren, // Indicates the presence of child nodes without actually setting them.
    vsVisible, // Indicate whether the node is visible or not (independant of the expand states of its parents).
    vsSelected, // Set if the node is in the current selection.
    vsInitialUserData, // Set if (via AddChild or InsertNode) initial user data has been set which requires OnFreeNode.
    vsAllChildrenHidden, // Set if vsHasChildren is set and no child node has the vsVisible flag set.
    vsClearing, // A node's children are being deleted. Don't register structure change event.
    vsMultiline, // Node text is wrapped at the cell boundaries instead of being shorted.
    vsHeightMeasured, // Node height has been determined and does not need a recalculation.
    vsToggling // Set when a node is expanded/collapsed to prevent recursive calls.
  );
  TVirtualNodeStates = set of TVirtualNodeState;
Man kann also angeben auf welche Nodes die Callbackfunktion angewendet wird.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  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 05:32 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