Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form-Konstruktor überschrieben; wie werden Komp. erzeugt? (https://www.delphipraxis.net/126991-form-konstruktor-ueberschrieben%3B-wie-werden-komp-erzeugt.html)

BackOrifice 6. Jan 2009 00:35


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:
var FSemesterSettings : Tfrm_NewSemester;
begin
  FSemesterSettings := Tfrm_NewSemester.Create(Semesters);
  FSemesterSettings.Show;
  FSemesterSettings.Release;
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.

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!

HalloDu 6. Jan 2009 01:32

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.
Delphi-Treff

lincore 6. Jan 2009 01:34

Re: Form-Konstruktor überschrieben; wie werden Komp. erzeugt
 
Delphi-Quellcode:
constructor create(...);
begin
  inherited {create(...), falls Parameter abweichen};
  {...}
end;
Nacht,
lincore

BackOrifice 6. Jan 2009 04:23

Re: Form-Konstruktor überschrieben; wie werden Komp. erzeugt
 
Auf das inherited bin ich auch gekommen - aber nicht auf das Create(nil); :-D


Danke, Jungs!

mkinzler 6. Jan 2009 08:48

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 05:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz