![]() |
Form-Konstruktor überschrieben; wie werden Komp. erzeugt?
Hi =)
Ich hoffe, so spät abends ist noch einer wach. Ich habe eine Formularklasse, bei der ich den Konstruktor überschrieben habe um dem Formular 1, 2 Objekte mitzugeben.
Delphi-Quellcode:
constructor Tfrm_Settings.Create(Settings: TSettings; Semesters: TSemesters);
begin _Settings := Settings; _Semesters := Semesters; end; Das Formular wird _NICHT_ automatisch erzeugt, sondern nur dann, wenn es gebraucht wird.
Delphi-Quellcode:
Problem jetzt: Da ich den Konstruktor überschrieben hab, werden die Komponenten auf dem Formular nicht mehr automatisch erzeugt; Nach dem Konstruktoraufruf sind alle Objekte außer _Settings und _Semesters nil. -> Logischweiße schlägt dabei FSemesterSettings.Show fehl, da von der Adresse 0 gelesen wird.
var FSemesterSettings : Tfrm_NewSemester;
begin FSemesterSettings := Tfrm_NewSemester.Create(Semesters); FSemesterSettings.Show; FSemesterSettings.Release; 2 Lösungen fallen mir ein: 1) Ich kümmer mich jetzt im Konstruktor selbst um alle Komponenten, dass sie erzeugt werden 2) Ich benutze irgendein geiles Schlüsselwort, welches mir die Objekte erstellt - nur kenn ich das nicht =( Hilfe! |
Re: Form-Konstruktor überschrieben; wie werden Komp. erzeugt
Wenn du einen Konstruktor überschreibst musst du mit inherited den geerbten Konstruktor, gleiches gilt für Destruktor, aufrufen.
![]() |
Re: Form-Konstruktor überschrieben; wie werden Komp. erzeugt
Delphi-Quellcode:
Nacht,
constructor create(...);
begin inherited {create(...), falls Parameter abweichen}; {...} end; lincore |
Re: Form-Konstruktor überschrieben; wie werden Komp. erzeugt
Auf das inherited bin ich auch gekommen - aber nicht auf das Create(nil); :-D
Danke, Jungs! |
Re: Form-Konstruktor überschrieben; wie werden Komp. erzeugt
Statt Nil wäre aber ein Owner auch nicht verkehrt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz