Erzeugung dynamischer Komponenten
-
Hallo Zusammen,
ich möchte zur Laufzeit meines Programms dynamisch (z.Bsp: auf ein Click- Ereigniss) eine Form erzuegen (MDIChild).
Dies funktioniert, solange ich das Ganze über die Funktion eines Buttons mache, mit:TForm2 *name = new TForm2 (this);
Ich würde die Form aber gerne in der Funktion, einer von mir selbst entwickelnden Klasse aufrufen.
Bei gleichem Quellcode erscheint dann folgende Fehlermeldung:[C++ Error] programm.cpp(932): E2285 Could not find a match for 'TForm2::TForm2(NameDerKlasse * const)
Ich habe keine Ahnung, wo das Problem liegt und aus der Fehlermeldung werd ich auch nicht schlau.
Vielleicht könnt ihr mir ja helfen??!!Vielen Dank!
mfg hans
-
Hallo,
Vielleicht solltest du noch die Headerdatei in der TForm2 deklariert ist mit einbinden. Was hast du denn als Owner im Konstruktor von TForm2 übergeben?
-
Hallo
nein der Fehler ist, das wie die Fehlermeldung sagt der Konstruktor des Forms als Parameter TComponent erwartet, du also in deiner eigenen Klasse keinen this übergeben kannst.
Entweder übergibst du dort stattdessen NULL (dann must du das Fenster auch wieder selber löschen) oder Application (dann wird das Fenster spätestens beim Beenden der Anwendung geschlossen).bis bald
akari
-
Stimmt natürlich.
Er könnte auch seiner Klasse wiederum einen Zeiger auf den späteren Owner mitgeben und den dort übergeben.
-
Hey danke! mit application funktioniert es.
hab ich euch jetzt richtig verstanden und der Speicherbereich den ich dann für die Form erzeugt hab. löscht sich automatiosch mit beenden des programms??
vielen dank.
mfg hans
-
Hallo
Wenn du Application angibst ja. Deshalb heißt dieser Parameter auch Owner.
bis bald
akari
-
Der Owner (den du im Konstruktor deiner Form mitgegeben hast) ist für das Löschen verantwortlich. D.h., dass beim Aufruf des Destruktors des Owners auch deine Form mitgelöscht wird. Wenn Application der Owner ist, also beim Beenden des Programmes.
-
vielen dank für die hilfe und die informationen!
hat wieder ein wenig zu meinem bescheidenen wissen über den C++ builder beigetragen
.mfg hans