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 treeview count hauptknoten (https://www.delphipraxis.net/115187-treeview-count-hauptknoten.html)

MSSSSM 7. Jun 2008 14:17


treeview count hauptknoten
 
ich habe ein treeview

Code:
name
..name
..irgendwas

name
..name
..irgendwas
wenn ich aber .Items.Count nehme, bekomme ich nicht 2 sondern 6

wie kann ich nur die ersten name zählen?

mfg

toms 7. Jun 2008 15:08

Re: treeview count hauptknoten
 
Hallo,

Ermittle den ersten Node und dann in einer Schleife mit getNextSibling die Nodes auf der gleichen Ebene.

Delphi-Quellcode:
var
  iNodes: Cardinal;
  Node: TTreeNode;
begin
   iNodes := 0;
   if TreeView1.Items.Count > 0 then
   begin
       Node := TreeView1.Items[0];
       while Assigned(Node) do
       begin
         Inc(iNodes);
         Node := Node.getNextSibling;
       end;
   end;
end;

oki 7. Jun 2008 15:12

Re: treeview count hauptknoten
 
Hi, Count liefert dir in einem Tree immer die Anzahl aller vorhandenen Knoten. Da bei ist die Ebene unerheblich. Du kannst mit TreeView.Items[0] den ersten Hauptknoten ermitteln. Der ist immer in der ersten Ebenen (wo sonst :) ). Dann kannst du mittels GetNextSibling den nächsten Knoten in der gleichen Ebene ermitteln. In einer while-Schleife kannst du das so lange tun, bis nil zurück kommt. Immer schön die Schleifendurchläufe mit zählen und schon hast du die Anzahl deiner Knoten einer Ebene.

Gruß oki

[edit] Ohm, bin ich lahm! In Worten das was toms als Code geliefert hat. Gruß [/edit]

marabu 7. Jun 2008 15:32

Re: treeview count hauptknoten
 
Hi,

ich würde den Code noch etwas eindampfen:

Delphi-Quellcode:
// EDIT: Signatur verbessert

function TopLevelCount(items: TTreeNodes): Integer;
var
  node: TTreeNode;
begin
  Result := 0;
  node := items.GetFirstNode;
  while Assigned(node) do
  begin
    Inc(Result);
    node := node.getNextSibling;
  end;
end;
Übrigens: Node.Count liefert immer die Zahl der ChildNodes. Auf Ebene 0 funktioniert das nicht, weil kein Parent zugänglich ist. Dort wird dann die Gesamtzahl der Knoten im Baum zurückgegeben. Trotz- und deswegen ist die Semantik aber sauber.

Freundliche Grüße

TOC 7. Jun 2008 15:35

Re: treeview count hauptknoten
 
Cool! Wuste ich wirklich noch nicht, danke für den Tip, das kann ich sehr gut gebrauchen! :thumb:

Grüsse von TOC :stupid: !


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