Wie kann ich ein Array des Typs "GroupBox" dynamisch erstellen?



  • Das mache ich später in einer Schleife, ja.
    Nur habe ich bei dem gcnew eine Exception, da der oben genannte Aufruf fehlschlägt.

    Die "Tracking Handles" lassen sich nur bei der Textbox, nicht bei der GroupBox erstellen, und ich habe keine Ahnung warum...



  • Dann hab ich Deine Frage falsch verstanden.

    Leider kann ich mir da auch keinen Reim drauf machen. Da müssen wohl die Experten ran. 🙂



  • Schade, aber trotzdem danke.
    Ich verzweifle an der Stelle, hat jemand noch eine Idee?



  • Ja,

    gib mal mehr Informationen. Geht nicht ist keine Fehlerbeschreibung.



  • Wie oben schon erwähnt, unter "Wert" steht <Nicht definierter Wert>

    Komme ich beim Debuggen an die Stelle des gcnew für die GroupBox, dann kommt folgende Exception:
    *
    Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" ist in Anwendung.exe aufgetreten.
    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.*



  • Knuddlbaer meint, Du sollst mehr Code zeigen. Dieses gbGroupBoxes[0] = gcnew GroupBox(); findet aus irgend einem Grund nicht statt.
    Du suchst an der falschen Stelle.



  • Mal etwas vom Thema ab,
    Man kann Arrays von Steuerelementen erstellen???????????



  • Mr X schrieb:

    Mal etwas vom Thema ab,
    Man kann Arrays von Steuerelementen erstellen???????????

    ja.



  • Naja, ich dachte den relevanten Code genannt zu haben.
    Aber hier mal noch mehr, auch wenn der Fehler bereits vor dieser Stelle liegt (hier kommt folglich nur noch die Exception):

    for(i=0;i<iAnzahlEinträge;i++)
    {	this->gbGroupBoxes[i] = (gcnew System::Windows::Forms::GroupBox());
    	this->gbGroupBoxes[i]->Parent = this;
    	this->gbGroupBoxes[i]->Controls->Add(this->cbCheckBoxes[i]);
    	this->gbGroupBoxes[i]->Controls->Add(this->tbTextBoxes[i]);
    	this->gbGroupBoxes[i]->Location = System::Drawing::Point(12, 12+((i-1)*iGroupBoxHöhe));
    	this->gbGroupBoxes[i]->Name = "GroupBox"+i;	//L"groupBox1";
    	this->gbGroupBoxes[i]->Size = System::Drawing::Size(780, iGroupBoxHöhe);
    	this->gbGroupBoxes[i]->TabIndex = 3+((i-1)*3);
    	this->gbGroupBoxes[i]->TabStop = false;
    	this->gbGroupBoxes[i]->Text = "GroupBox"+i;
    }
    

    Ich hoffe das hilft nun weiter. Damit ist alles relevante an Code gepostet.
    Wie gesagt, der Fehler liegt in der Form1.cpp in der im ersten Posting gezeigten code, der aus einem mir unbekannten Grund nur bei der Textbox funktioniert.

    Habt ihr noch eine Idee?



  • Funzt doch...

    array<GroupBox^>^ gbGroupBoxes;
    
    gbGroupBoxes=gcnew array<GroupBox^>(10); // funktioniert doch 
    
    int y = 10; //Anfangsposition im Formular "oben" 
    
    for(int i=0;i<10;i++) 
    {   
    	gbGroupBoxes[i] = gcnew System::Windows::Forms::GroupBox(); 
    	gbGroupBoxes[i]->Parent = this;
    	this->Controls->Add(gbGroupBoxes[i]); 
    	gbGroupBoxes[i]->Location = System::Drawing::Point(10, y);
    	gbGroupBoxes[i]->TabIndex = 3+((i-1)*3); 
    	gbGroupBoxes[i]->TabStop = false; 
    	gbGroupBoxes[i]->Text = "GroupBox"+i;
    	y += 100;
    }
    

    Hier noch mal als Projekt...

    http://www.rb-softarticle.com/GroupBox.rar

    Gruß, Doug_HH



  • Danke für das Beispiel.
    Ich habe das mal verglichen und auch mal selbst kompiliert und gestartet.
    Das funktioniert bei mir ebenfalls, allerdings deklarierst du den Zeiger auch erst in der Funktion, ich im header.
    Macht das einen Unterschied, dass du das in der Funktion "button1_Click" und ich in "Form1_Load" stehen habe?
    Oder ist da vielleicht ein Unterschied weil ich die 2008er Version nutze (musste deins erst konvertieren)?



  • Ok, danke für eure Hilfe, ich hab den Fehler nun gefunden.
    Nachdem ich es umbauen wollte ist es mir dann aufgefallen:
    Man sollte nicht einen else-Zweit ohne Klammer schreiben und dann die eine Zeile darin auskommentieren.... 🙄

    Danke an alle! 🙂

    Gruß


Anmelden zum Antworten