Komponenten während der Laufzeit erzeugen
-
hmm, ich hab erst gestern angefangen damit zu programmieren. hab davor mit Delphi programmiert, und versuch gerade umzusteigen... bin noch relativ planlos

-
wenn Du delphi hattest, dann doch wohl borland IDE x oder?
vergiss visual...borland builder bringts noch weit!
-
schau dir mal die funktion InitializeComponent() deiner Form an. Dort steht drin, wie die von Hand erstellten (also im designer) steuerelemente erstellt werden.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Einfach
TextBox tb = gwnew TextBox(); // setze hier noch die Properties die Du willst (Name, Size, Location, usw.) this.Controls.Add(tb);Und wie schon gesagt wurde: Schau Dir mal an was in "InitializeComponents" gemacht wird, dann kannst Du es dort abschauen...
-
ich habs jetz eine procedure geschrieben, die eine Textbox erstellt:
void addtb() { this->SuspendLayout(); TextBox^ tb = gcnew TextBox; tb->Location = Point(10,10); tb->Size = System::Drawing::Size( 75, 25 ); this->Controls->Add(tb); this->ResumeLayout(); }Jetzt hab ich versucht ein 2-dimensionales array vom typ Button zu machen, weil es das um einiges erleichtern würde die vielen Boxen dann zu managen.
mit TextBox^ tbm[10][10] gehts nicht. Warum nicht?? Wie kann ich das machen??Danke
-
array<TextBox^,2> ^twoDimArray = gcnew array<TextBox^,2>(10, 10);
-
ok, aber warum muss ich das array in diesem fall so definieren??
und wie kann ich auf die einzelnen elemete zugreifen??
-
ok, aber warum muss ich das array in diesem fall so definieren??
warum funktioniert
tbm[2][2]->Location = Point(10,10);nicht?? tbm ist der name des arrays
Danke!
-
Das würde mich auch mal interessieren!
-
Ich habs noch immer nicht geschaft

array<TextBox^,2> ^twoDimArray = gcnew array<TextBox^,2>(10, 10);in diesem array stehen dan die handels der Textboxen oder??
wie kann ich dann die Eigenschaften der Einzelnen Textboxen verändern??Danke
-
Also, hier ein Beispiel:
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { if (twoDimArray == nullptr) twoDimArray = gcnew array<TextBox^,2>(10, 10); twoDimArray[0,0] = gcnew TextBox(); twoDimArray[0,0]->Name = "1"; twoDimArray[0,0]->Location = System::Drawing::Point(100, 100); twoDimArray[0,0]->Size = System::Drawing::Size(300, 22); this->Controls->Add(twoDimArray[0,0]); } // das folgende ist eine "Member-Variable": array<TextBox^,2> ^twoDimArray;Wenn Du das Array anlegst, sind da noch keine TextBoxen drin! Du hast nur den Speicherbereich für das array angelegt. Die Textboxen musst Du jetzt noch separat anlegen (ich habe in dem Beispiel nur eine reingetan).
Hoffe das hilft Dir weiter...
PS: Kann das mal jemand nach C++/CLI verschieben???
-
Danke, jetzt habs ichs hinbekommen!

Aber noch ein kleines Problem...tbm[i,j]->Font->Size = 40;warum funktioniert das nicht?? Was muss ich machen um die schriftgöße zu ändern??
Danke
-
Das Font-Objekt kannst Du nicht ändern! Du musst ein neues erzeugen und dann dort die alten Werte vom existierenden Übernehmen und die gewünschetn anpassen.
Mach es doch mal im Designer und schau Dir den COde in "InitializeComponents" an...