AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TreeView: TreeNode -> untergeordneter Eintrag

TreeView: TreeNode -> untergeordneter Eintrag

Ein Thema von Die Muhkuh · begonnen am 18. Apr 2004 · letzter Beitrag vom 20. Mär 2014
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Sharky
Sharky

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

Re: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 18. Apr 2004, 08:55
Zitat von toms:
@toms: Der Ansatz mit einer for-Schleife kann nicht funktionieren....
Bei mir geht das so ohne Probleme. Ich werte allerdings nicht den Tiel eines Eintrages aus sondern eine Variable in einem zugeordneten Objekt.

Delphi-Quellcode:
  i_node := 0;
  for ndx := 0 to TreeView1.Items.Count - 1 do
  begin
    if (PMyData(TreeView1.Items[ndx].data)^.id = datensatz.sparten_id) then
    begin
      i_node := ndx;
      Break;
    end;
  end;
  TreeView1.Items.AddChildObject(TreeView1.Items[i_node], datensatz.titel, Pointer(NodeData));
Da es per definition immer nur einen Node mit einer bestimmten ID (oder auch Text) geben kann funktioniert das so.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#12

Re: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 18. Apr 2004, 08:57
@Toms,

stimmt. Bei zwei Kategorien gehts nicht.

Der Code von dir Toms geht auch nicht. Wenn ich 3 Kategorien hab und füge in der letzen ein Untereintrag ein, dann fügt er überall einer ein.

Aber ich glaube ihr habt mich noch nicht ganz verstanden.

Die Kategorie heißt nicht immer Kategorie1 etc. Die kann jeden Namen annehmen so wie der User das möchte.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 18. Apr 2004, 12:52
Moin Spider,

wann soll den Hinzugefügt werden?
Wenn der Anwender einen Eintrag ausgewählt hat?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#14

AW: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 19. Mär 2014, 20:53
Hallo Zusammen,

ich stehe mal wieder vor einem Wald und finde den passenden Baum nicht.

Zum Problem:
Ich habe die ListBox1, in der die Parents aufgeführt werden und die ListBox2 worin die Childs sind. Nun möchte ich den ersten Eintrag aus der ListBox1 in TreeView2 einfügen, was funktioniert. Nun sollen die Childs zum ersten Parent eingetragen werden, dann das 2. Parent und wieder die Childs.

Irgendwo habe ich einen Denkfehler, ich komme aber nicht drauf. Damit klar ist, was ich vor habe, erst mal 2 Screens:

So habe ich das bisherige Ergebnis:
falsch.jpg

So soll es aber aussehen:
richtig.jpg

Diesen Quelltext habe ich:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  PA: Integer; //Parent Anzahl
  PZ: Integer; //Parent Zähler
  CA: Integer; //Child Anzahl
  CZ: Integer; //Child Zähler

begin
  PZ := 0;
  CZ := 0;
  PA := listbox1.Items.Count; //Anzahl der Einträge in der Listbox1 ermitteln
  CA := listbox2.Items.Count; //Anzahl der Einträge in der Listbox2 ermitteln

  while PZ < PA do
    begin
      treeview2.Items.Add(nil, listbox1.Items[PZ]);
          while CZ < CA do
            begin
              treeview2.Items.AddChild('XXXXX', listbox2.Items[CZ]); // <---- Hier ist der Knackpunkt (vermute ich)
              CZ := CZ + 1;
            end;
      PZ := PZ + 1;
      CZ := 0;
    end;
end;
Ich weiß, dass ich dem Treeview irgendwie klar machen muss, unter welchem Parent ('XXXXX') was für ein Child soll, aber wie gesagt - Ich finde den richtigen Baum einfach nicht.

Könnt Ihr mir noch einmal einen Tipp geben? Wäre prima. Vielen Dank schon mal!

LG DieFliege
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#15

AW: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 19. Mär 2014, 22:39
@DieFliege: TTreeView.Items.Add gibt einen Node zurück, den du bei TTreeView.Items.AddChild als ParentNode verwenden musst. Ich hab vor wenigen Tagen ebenfalls mit TreeViews zu kämpfen gehabt, daher weiß ich das .

MfG Dalai
  Mit Zitat antworten Zitat
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#16

AW: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 20. Mär 2014, 06:17
Hallo Dalai,

vielen Dank für Deine Meldung.

Ich hatte mir das schon gedacht und daher hatte ich dies versucht mit dieser Code-Zeile zu lösen:

Delphi-Quellcode:
.
.
begin
  treeview2.Items.AddChild(treeview2.Items.Add(nil, listbox1.Items[PZ]), listbox2.Items[CZ]);
  CZ := CZ + 1;
end;
.
.
Ergebnis war zwar, dass das Child eingetragen wurde, aber die weiteren Einträge als "Child-Child" - Irgendwie hab ich da noch einen Denkfehler.

Meine Denkweise war, dass ich ein "Parent" habe und dies auch in einen TreeView eintrage, dann möchte ich den nächsten Eintrag in "Parent -> Child" vornehmen, also gebe ich das betreffende "Parent" an und trage das "Child" ein - Soweit die Theorie:

- Eintrag von Parent1 im TreeView
- Eintrag von Child1: Parent1 -> Child1
- Eintrag vom Child2: Parent1 -> Child2
- Eintrag vom Child3: Parent1 -> Child3
- Eintrag von Parent2 im TreeView
- Eintrag von Child1: Parent2 -> Child1
- Eintrag vom Child2: Parent2 -> Child2
- Eintrag vom Child3: Parent2 -> Child3

Daher auch die Schleifen, da ich die Listboxen zur Laufzeit fülle.


Gruß DieFliege
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.535 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 20. Mär 2014, 07:14
Du wirst wohl Zwischenvariablen brauchen. In Pseudocode:
Delphi-Quellcode:
for ParentIndex := 0 to ParentNodes.Count - 1 do
  begin
    ParentNode := TreeView.Items.AddChild(nil, ParentNodes[ParentIndex]);
    for ChildIndex := 0 to ChildNodes.Count - 1 do
      TreeView.Items.AddChild(ParentNode, ChildNodes[ChildIndex]);
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#18

AW: TreeView: TreeNode -> untergeordneter Eintrag

  Alt 20. Mär 2014, 17:15
Hallo Detlef,

wieder mal vielen Dank!

Dein Tipp mit den Zwischenvariablen war goldrichtig.

Für alle, die es interessiert, hier noch mal mein alter Code und darunter der neue funktionierende:

ALT (mit Fehler):
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  PA: Integer; //Parent Anzahl
  PZ: Integer; //Parent Zähler
  CA: Integer; //Child Anzahl
  CZ: Integer; //Child Zähler

begin
  PZ := 0;
  CZ := 0;
  PA := listbox1.Items.Count; //Anzahl der Einträge in der Listbox1 ermitteln
  CA := listbox2.Items.Count; //Anzahl der Einträge in der Listbox2 ermitteln

  while PZ < PA do
    begin
      treeview2.Items.Add(nil, listbox1.Items[PZ]);
          while CZ < CA do
            begin
              treeview2.Items.AddChild('XXXXX', listbox2.Items[CZ]); // <---- Hier ist der Knackpunkt (vermute ich)
              CZ := CZ + 1;
            end;
      PZ := PZ + 1;
      CZ := 0;
    end;
end;


NEU (funktioniert):
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  PA: Integer; //Parent Anzahl
  PZ: Integer; //Parent Zähler
  CA: Integer; //Child Anzahl
  CZ: Integer; //Child Zähler
  myNode: TTreeNode;

begin
  PZ := 0;
  CZ := 0;
  PA := ListBox1.Items.Count; //Anzahl der Einträge in der Listbox1 ermitteln
  CA := ListBox2.Items.Count; //Anzahl der Einträge in der Listbox2 ermitteln

  while PZ < PA do
    begin
      myNode := TreeView2.Items.Add(nil, ListBox1.Items[PZ]);
          while CZ < CA do
            begin
              TreeView2.Items.AddChild(myNode, ListBox2.Items[CZ]);
              CZ := CZ + 1;
            end;
      PZ := PZ + 1;
      CZ := 0;
    end;
end;
Vielen Dank an alle die mir geholfen haben, ein echt prima Forum! Und Detlef - nun darf ich mein Programm sogar "Version 1.1" nennen

LG DieFliege
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:28 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