Neues Objekt (Form) vereinbaren
-
Hallo zusammen,
in meinem Lehrbuch steht folgendes zur Objektvereinbarung. Das Beispiel zeigt es an einem StringList:TStringList *StringList1;
StringList1 = new TStringList;
Ich wollte nun ein neues Formular vereinbaren, das erscheint, wenn ich einen Button klicke! Ich bin so vorgegangen:
TForm1 *Form1; TForm2 *Form2; .... void __fastcall TForm1::Button1Click(TObject *Sender) { Form2 = new TForm2; Form2->Show(); }
Dabei kommen aber viele Meldungen (von "Undefiniertes Symbol 'Form2'", " Fehler in der Deklarationssyntax" und "Typname erwartet")
Was mache ich falsch?Vielen Dank für alles,
lg, freakC++
-
Kann es ein, dass die Klasse TForm2 da nicht bekannt ist? Wo sind diese Deklarationen überhaupt, global in der cpp?
-
Hallo
Eigentlich ist das schon richtig.
Jedoch ist die Frage, was TForm1 und TForm2 sein soll.Das heisst, es müsste z.B. so aussehen (so habe ich es gemacht).
TForm *Form1; Form1 = new TForm(Application); Form1->Visible=true;
Ich bin jetzt nicht ganz sicher, ob man das (Application) braucht.
-
Also die Meldungen, lassen sich meineswissens auf folgendes schliessen.
Typname erwartet
Er kennt folgende Klassen nicht.
- TForm1
- TForm2Undefiniertes Symbol 'Form2'
Dies ist ein klarer Folgefehler. Siehe oben.Fehler in der Deklarationssyntax
Kommt von "new TForm2", <- Folgefehler
-
sagte ich doch schon.
-
Hey,
der Fehler lag also schon daran wie ihr vermutet habt (siehe Deforation). Doch warum muss man zwingend noch Application schreiben? Das mache ich bei einer StringList auch nicht. Wenn das neue Formular erscheint, ist es eine Kopie des alten, d.h. der Button ist auch vorhanden? Weíß jemand wie ich ein "wirklich neues" Formular bekomme??Vielen Dank für eure Hilfe
lg, freakC++
-
Du musst nicht zwingend Application schreiben. Der Parameter den du im Konstruktor von TForm mit angibst, ist der Owner. Der Owner ist für das zerstören des Objekts am Ende zuständig.
Du kannst da also auch eine 0 eintragen, musst dann diese Form natürlich selber löschen.