![]() |
Wie funktioniert der OnCreate-Eventhandler
Hierbei handelt es sich ausschließlich um eine Logikfrage:
Wie zum Teufel funktioniert ein OnCreate-Eventhandler. Einer Instanz kann man doch, bevor sie noch nicht erstellt wurde, keinen Eventhandler zuweisen?! Beispiel mit Destroy
Delphi-Quellcode:
Die einzige Möglichkeit, die mir grad so einfällt, wäre, dass man dem Constructor gleich den Eventhandler mitgibt
var
C: TMyClass; ... C := TMyClass.Create; C.OnDestroy := DestroyEvent; C.Free; // Hier wird Destroyaufgerufen, in der wiederum DestroyEvent() aufgerufen wird...
Delphi-Quellcode:
Sorry für die blöde Frage
C := TMyClass.Create( CreateEvent ); //Edit
MfG Emre |
Re: Wie funktioniert der OnCreate-Eventhandler
Hallo Aphton,
das OnCreate-Ereignis gibt es doch eigentlich nur bei den VCL-Komponenten, wenn sie per Ressource ihre Parameter zugewiesen bekommen. In eigenen Objekten/Klasses/WasAuchImmer müsste das OnCreate-Ereignis definitiv per Parameter an den Konsturktor übergeben werden. Alles andere finde ich nicht logisch. Und nach dem Konstruktor wird dann sofort die AfterConstruction-Methode aufgerufen. Also bleibt wirklich kein Platz mehr, irgendwo noch eine Zuweisung machen zu können. Hier nochmal, wie das bei TForm geht:
Delphi-Quellcode:
{ TCustomForm }
constructor TCustomForm.Create(AOwner: TComponent); begin GlobalNameSpace.BeginWrite; try CreateNew(AOwner); if (ClassType <> TForm) and not (csDesigning in ComponentState) then begin Include(FFormState, fsCreating); try if not InitInheritedComponent(Self, TForm) then raise EResNotFound.CreateFmt(SResNotFound, [ClassName]); finally Exclude(FFormState, fsCreating); end; if OldCreateOrder then DoCreate; // DoCreate ruft OnCreate auf und setzt danach Visible auf WAHR end; finally GlobalNameSpace.EndWrite; end; end; Bernhard |
Re: Wie funktioniert der OnCreate-Eventhandler
Wenn du einen entsprechenden Konstruktor bereitstellst.
Aber ich verstehe noch nicht ganz, auf was du hinaus willst |
Re: Wie funktioniert der OnCreate-Eventhandler
Danke Rollstuhlfahrer.
Ich werd wohl auf ein OnCreate verzichten müssen. @mkinzler Stell dir mal das Beispiel mit einem CreateEvent vor; dann wirst du mein Problem schon verstehen. MfG und danke nochmal |
Re: Wie funktioniert der OnCreate-Eventhandler
Sagen wir es mal so, wenn du im Code selber ein Object erstellst, dann kannst du auch gleich selber drauf reagieren.
Wenn es von der VCL erstellt wird, dann weißt du ja nicht (genau) wann dieses geschieht und darum wurde dort dieses Ereignis eingeführt (und über die Interna hat ja rollstuhlfahrer schon was gesagt). Außerdem kannst du im Code ja alles nötige notfalls per Parameter einem Create mitgeben. (wenn man sich selber eine Klasse erstellt) |
Re: Wie funktioniert der OnCreate-Eventhandler
Mir persönlich gehts so, dass ich noch nie ein OnCreate-Event außerhalb des des Forms benötigt habe. Alle anderen Komponenten lassen sich direkt über den OI oder gleich über FormCreate einstellen. Bei Klassen hab ich dann das Problem, dass hin und wieder 2-zeilige Definitionen auftreten, da die Liste der übergebenen Parameter etwas größer ist. Aber nach dem Aufruf von Create kann man ja dann mit einem imaginären OnCreate rumspielen, also etwa so:
Delphi-Quellcode:
Bernhard
var
c: TMyCLass; begin c := TMyClass.Create(Param1, Param2, Param3); // OnCreate AfterCreateOf(c); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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 by Thomas Breitkreuz