VisualC++ 08: TreeView
-
Hey
Ich möchte Objekte von Klassen in einer TreeView anzeigen lassen. Die Struktur wäre die folgende:
Labor Nummer + Gruppenname 1 + Teilnehmer 1 ... + Teilnehmer n ... + Gruppenname n + Teilnehmer 1 ... + Teilnehmer n ... Labor Nummer n ...
Ich bekomme zwei Ebenen bereits hin (also den Hauptstamm + einen Unterstamm). Mehr aber nicht. Steh da ein wenig auf der Leitung. Blöderweise hilft google und msdn nicht sehr viel weiter weil die Codebeispiele oftmals nicht Funktionieren. Zum Beispiel mag
TreeNode * nd1; // new Node
nicht funktionieren, dafür funktioniert
[cpp|TreeNode^ nd1; // new Node[/cpp]
1a. Man muss also Ableiten... Warum auch immer sich das im Laufe der Zeit geändert hat.Mit dem folgenden Code bekomme ich den Ebenen Test schon mal hin (die Klassen sind noch nicht ganz fertig
und das verschachteln der einzelnen Klassen (Laborreservierungssystem -> Labore -> Gruppen -> Studenten) tuts noch nicht so ganz.
Keine Sorge, das ist weder eine Hausaufgabe noch was kommerzielles. Wir haben in Software Engineering so ein System ohne GUI Programmiert und ich wollte das ganze nun für mich mit GUI Programmieren, aus zwei Gründen: 1. Wieder reinkommen in C++ und OOP und 2. Um das GUI entwickeln zu erlernen.Ich hoffe mich kann einer verstehen und mir weiter helfen
Grüße
Edit: Code vergessen
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { TreeNode^ ParentNode1; ParentNode1 = treeView1->Nodes->Add(textBox1->Text); ParentNode1->Nodes->Add("Gruppenname: "+textBox7->Text); ParentNode1->Nodes->Add("Maximale Teilnehmer: "+textBox2->Text); ParentNode1->Nodes->Add("Anzahl Gruppen: "+textBox2->Text); ParentNode1->Expand(); }
Edit2: Habs
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { TreeNode^ ParentNode1; ParentNode1 = treeView1->Nodes->Add(textBox1->Text); ParentNode1->Nodes->Add("Gruppenname: "+textBox7->Text); ParentNode1->FirstNode->Nodes->Add("Test"); ParentNode1->Nodes->Add("Maximale Teilnehmer: "+textBox2->Text); ParentNode1->Nodes->Add("Anzahl Gruppen: "+textBox2->Text); ParentNode1->Expand(); }
In einem Anflug von Geistiger erhabenheit
-
Oorim schrieb:
1. Wieder reinkommen in C++ und OOP
Wirklich C++? Das sieht mir eher nach C++/CLI aus:
TreeNode^ nd1
Aber ich sehe dein Problem nicht ganz? Schreib dir doch eine Knotenklasse, die wiederum Zeiger auf andere Knoten hat.
-
Ich habe bisher nur Konsolenanwendungen geschrieben. Von daher kann es sein das ich hier Dinge als C++ bezeichne die vll was anderes sind.
Mein Problem war einen Knoten zu generieren der wiederrum Kinder hat die wiederrum Kinder haben. Das hab ich mit dem letzten Code hinbekommen
-
Dieser Thread wurde von Moderator/in Marc++us aus dem Forum C++ in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
http://msdn.microsoft.com/de-de/library/system.windows.forms.treenodecollection.add.aspx
Add liefert ein TreeNode zurück an den Du wiederum anhängen kannst. Das machst Du Doch auch bereits^^
TreeNode^ ParentNode1;
ParentNode1 = treeView1->Nodes->Add(textBox1->Text);
ParentNode1->Nodes->Add("Gruppenname: "+textBox7->Text);TreeNode^ ParentNode1; ParentNode1 = treeView1->Nodes->Add(textBox1->Text); ParentNode1 = ParentNode1->Nodes->Add("Gruppenname: "+textBox7->Text); ParentNode1->Nodes->Add("Neue ebene: "+textBox7->Text);
-
Ja richtig. Wie gesagt, 10s nach meinem Post hat sich das Thema schon wieder erledigt gehabt weil ich gemerkt hab das das so funzt
ParentNode1->FirstNode->Nodes->Add("Test");
Damit kommt ich dann in die dritte Ebene weil die "FirstNode" die Node eins hinter dem Stamm ist (also quasi die Zweite)... Blöd zu erklären aber ich glaube ich weis wies Funktioniert.
-
eine Frage hab ich doch noch
| Stamm 1 | + Node 1 | + Node 1.1 | + Node 1.2 | + Node 2
Das klappt soweit. Aber wenn ich eine Node 2.2 hinzufügen will (mit NextNode) schmiert mir das Programm immer ab. Wie füge ich also jetzt am sinnigsten noch Node 2(.1, .1, ..., .n) und Node 3(.1, .2, ... , .n) hinzu?
Grüße
-
Node2.Nodes.Add(...)
Btw.: Schmiert ab ist keine brauchbare Beschreibung - erst recht nicht wenn der Codeausschnitt und die dazugehörige Exception fehlt.
-
Danke ich werd in Zukunft drauf achten
Edit:
TreeNode^ ParentNode1; ParentNode1 = treeView1->Nodes->Add(textBox1->Text); ParentNode1->Nodes->Add("Gruppenname: "+textBox7->Text); ParentNode1->FirstNode->Nodes->Add("Test"); ParentNode1->FirstNode->Nodes->Add("Maximale Teilnehmer: "+textBox2->Text); ParentNode1->FirstNode->Nodes->Add("Anzahl Gruppen: "+textBox2->Text); ParentNode1->Nodes->Add("Test"); ParentNode1->NextNode->Nodes->Add("Test");
Ohne die letzte Zeile gehts noch, mit der letzten Zeile lässt es sich Ausführen und nach Klick auf den button heist es
Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" ist in System.Windows.Forms.dll aufgetreten.
Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Heist für mich soviel wie: NextNode weis nich worauf es zugreifen soll. Ich steh ein wenig auf dem Schlauch ^^
-
du greifst mit
ParentNode1->NextNode
auf den nächten knoten auf der ebene von ParentNode1.
da dort aber scheinbar keiner ist gibts ne exception.-parent -name -test -teiln -grp -test <--- nix