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/)
-   -   Delphi VST Row in Abhängigkeit von Datenwert ausblenden (https://www.delphipraxis.net/109797-vst-row-abhaengigkeit-von-datenwert-ausblenden.html)

richard_boderich 7. Mär 2008 18:24


VST Row in Abhängigkeit von Datenwert ausblenden
 
N'abend zusammen!

Ich möchte alle Rows des kompletten VST durchgehen. Falls in einen Row z.B an Column[2] ein bestimmter String steht, soll das jeweilige row ausblendet werden. Wie kann ich dies Realisieren? Ich habe dunkel was von InterateSubtree in Erinnerung, weis
jedoch nicht ob ich dies für den Fall anwenden kann, oder ob es vielleicht bessere und schnellere Möglichkeiten gibt.
Welche Methoden des VST sind dafür am sinnvollsten?

mfG Richard

grenzgaenger 7. Mär 2008 18:50

Re: VST Row in Abhängigkeit von Datenwert ausblenden
 
Was verstehst du denn unter VST??? :gruebel: :gruebel: :gruebel:

richard_boderich 7. Mär 2008 18:53

Re: VST Row in Abhängigkeit von Datenwert ausblenden
 
@grenzgaenger

Den Virtual String Tree. ;)

mfg Richard

OG Karotte 7. Mär 2008 20:10

Re: VST Row in Abhängigkeit von Datenwert ausblenden
 
Hallo Richard,

die eine Möglichkeit wäre IterateSubtree

Delphi-Quellcode:
Procedure TForm1.MyCallBack(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
Begin
   If Data.xyz = abc Then Sender.IsVisible[Node] := false;

End;

Procedure TForm1.ButtonClick(Sender: TObject);
Begin
   VST.IterateSubTree(nil, MyCallBack, nil);
End;
Die andere (entnommen aus diesem Thread, gepostet von Prototypjack, leicht angepasst):
Delphi-Quellcode:
procedure Foo;
var
  lNode: PVirtualNode;
  Data: PYourNodeData;
begin
  lNode := YourVST.GetFirst;
  while Assigned(lNode) do
  begin
     If Data.xyz = abc Then YourVST.IsVisible[lNode] := false;

    // Next Node
    lNode := YourVST.GetNext(lNode);
  end;
  // Hier ist die Schleife beendet
end;

generic 7. Mär 2008 21:17

Re: VST Row in Abhängigkeit von Datenwert ausblenden
 
Zitat:

Zitat von OG Karotte
Hallo Richard,

die eine Möglichkeit wäre IterateSubtree

Delphi-Quellcode:
Procedure TForm1.MyCallBack(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
Begin
   If Data.xyz = abc Then Sender.IsVisible[Node] := false;

End;

Procedure TForm1.ButtonClick(Sender: TObject);
Begin
   VST.IterateSubTree(nil, MyCallBack, nil);
End;

diese Lösung ist sehr schön, hat aber einen kleinen Nachteil.
In Data sind nicht die Knotendaten gespeichert.
Die Knotendaten müssen nach wie vor mit getNodeData geholt werden.
In Data steht ein Zeiger welcher zusätzlich von IterateSubtree mitgegeben werden kann.

Dieses habe ich auch im Stammtischvideo erklärt.
http://www.delphipraxis.net/videos#Stammtisch_2

Im Entwickler Magazin 02/08 Seite 68 ff. ist es auch drin.
[edit]
quotetag korrigiert

OG Karotte 8. Mär 2008 08:02

Re: VST Row in Abhängigkeit von Datenwert ausblenden
 
Zitat:

Zitat von generic
diese Lösung ist sehr schön, hat aber einen kleinen Nachteil.
In Data sind nicht die Knotendaten gespeichert.
Die Knotendaten müssen nach wie vor mit getNodeData geholt werden.
In Data steht ein Zeiger welcher zusätzlich von IterateSubtree mitgegeben werden kann.

Uuupps :oops:, das kommt, wenn man mal eben schnell was zwischen Tür und Angel macht :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 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