Autor Beitrag
Krefti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Di 03.03.09 12:49 
Hi zusammen,

ich hab jetzt schon eine ganze weile das Forum durchsucht und nicht das passende gefunden.

Ich möchte in meinem Treeview auf unterster hierarchieebene die anzahl der unterpunkte ermitteln.

Wie mach ich das??

mit Treeview.item.items[].count ??

wenn ja, steht in items[] die hierarchieebene??

Vielen Dank schon mal für eure hilfe!

gruß
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 03.03.09 12:57 
das müsstest du imho mit rekusion realisieren. Wie genau kann ich dir nicht sagen, hab grad kein delphi da. vl. reicht das ja schon als gedankenanstoss^^

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Di 03.03.09 13:04 
danke schon mal für die antwort..

*nachdenk*

ähh..was rekusion bedeutet weiß ich allerdings nicht wirklich..werd mal suchen, aber wenn mir dazu jemand noch helfen könnte wäre wirklich super..

danke!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 03.03.09 14:14 
Moin!

user profile iconKrefti hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte in meinem Treeview auf unterster hierarchieebene die anzahl der unterpunkte ermitteln.
Kannst du mal erläutern, was du damit genau meinst? Die Anzahl der Knoten, die keine Kinder haben (=Blätter)? :gruebel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Di 03.03.09 14:23 
also folgendermaßen:

Mein treeview soll insgesamt 6 Ebenen haben. Sichtbar sind beim Aufrufen des Dialogs 5. Der 5. ebene kann man eine unbegrenzte Anzahl an Unterpunkten hinzufügen, die werden dann mit dem gleichen Namen geöffnet, der durchnummeriert ist. Jetzt soll die Möglichkeit bestehen, dass der Nutzer einzelne Datensätze(Unterpunkte) wieder löschen kann. Jetzt möchte ich die durchnummerierte folge, die durch das Löschen entstanden ist, natürlich wieder herstellen.
Dazu dacht ich, ich zähl einfach die noch vorhandenen Unterpunkte und schreib die Nummerierung der Unterpunkte neu.

Wenn das natürlich auf einer einfachere Weise gehen würde, wär ich sehr gern bereit Vorschläge anzuhnehmen ;-)!!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 03.03.09 14:29 
Moin!

Hm, erschöpfend war die Erklärung jetzt nicht, aber vielleicht hilft dir das hier: :?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  var
    i,cnt: Integer;
begin
  cnt := 0;
  for i := 0 to TreeView1.Items.Count-1 do // alle Knoten
    if (NOT TreeView1.Items.Item[i].HasChildren) then // keine Kinder = Blatt
      Inc(cnt);
  ShowMessageFmt('%d Blätter gefunden.',[cnt]);
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Di 03.03.09 14:43 
danke für deine mühe, ich schaus mir gleich an..

Inwiefern nicht genügend erklärt??

also ich möchte ja nur diese Punkte zählen, die ich auf der aller untersten Ebene angelegt habe.

Hab jetzt mal einen Screenshot angehängt, vielleicht erklärt das mein Anliegen eher.

Die Punkte unter Streckenbeschreibung und Flugbewegungsangaben habe ich mittels des hinzufügen Buttons erzeugt. Wenn ich jetzt z.b.Streckenbeschreibung selektierte wird der Bearbeiten und Löschen Button aktiv. Wenn ich Streckenbeschreibung0 lösche, möchte ich, dass Streckenbeschreibung1 zu Streckenbeschreibung0 wird.

Ich hab mir gedacht, dass ich die vorhandenen Punkte einfach zählen kann und die dann neu durchnummeriere anhand des Zählergebnisses.

Unter den anderen Punkten Streckenbeschreibung/Flugbewegungsangaben könnten auch x-beliebig viele Einträge angelegt und anschließend wieder gelöscht und editiert werden.
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 03.03.09 14:59 
Moin!

user profile iconKrefti hat folgendes geschrieben Zum zitierten Posting springen:
also ich möchte ja nur diese Punkte zählen, die ich auf der aller untersten Ebene angelegt habe.

Hab jetzt mal einen Screenshot angehängt, vielleicht erklärt das mein Anliegen eher.
Jup, das tut es. ;) Es war noch nicht klar, ob jeder Zweig für sich gerechnet werden soll. :idea:

In diesem Fall wäre es allerdings besser, so vorzugehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.TreeView1DblClick(Sender: TObject);
  var
    cnt: Integer;
    Node: TTreeNode;
begin
  cnt := 0;
  if Assigned(TreeView1.Selected) and TreeView1.Selected.HasChildren then begin
    Node := TreeView1.Selected.getFirstChild;
    repeat
      Inc(cnt);
      Node := Node.getNextSibling;
    until (Node = NIL);
  end;
  ShowMessageFmt('Der Knoten hat %d Kinder.',[cnt]);
end;
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Mi 04.03.09 09:30 
Vielen dank dir schon mal!! Generell funktioniert das auch. Nur will er mit dem Code die Kinder von dem zu löschenden Knoten zählen, was ja 0 ist. ich möchte ja die Punkte in der ebene zählen, wo ein Punkt gelöscht wird, um ja dann neu durch zu nummerieren.
Sprich ich hab meine Streckenbeschreibung, davon möchte ich die kinder zählen, von denen ich auch eines löschen möchte.
Ich hoffe mein Problem ist jetzt endgültig nach zu vollziehen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 04.03.09 12:28 
Moin!

user profile iconKrefti hat folgendes geschrieben Zum zitierten Posting springen:
Nur will er mit dem Code die Kinder von dem zu löschenden Knoten zählen
[...]
ich möchte ja die Punkte in der ebene zählen, wo ein Punkt gelöscht wird
Dann solltest du mal über diese Referenz nachdenken: :think:
ausblenden Delphi-Quelltext
1:
TreeView1.Selected.Parent					
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Do 05.03.09 10:10 
nochmals vielen dank. habs jetzt mit dem treeview.selected.parent hinbekommen:-)!!!