AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie funktioniert der OnCreate-Eventhandler
Thema durchsuchen
Ansicht
Themen-Optionen

Wie funktioniert der OnCreate-Eventhandler

Ein Thema von Aphton · begonnen am 5. Jul 2009 · letzter Beitrag vom 5. Jul 2009
Antwort Antwort
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie funktioniert der OnCreate-Eventhandler

  Alt 5. Jul 2009, 13:41
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:
var
  C: TMyClass;
...
  C := TMyClass.Create;
  C.OnDestroy := DestroyEvent;
  C.Free; // Hier wird Destroyaufgerufen, in der wiederum DestroyEvent() aufgerufen wird...
Die einzige Möglichkeit, die mir grad so einfällt, wäre, dass man dem Constructor gleich den Eventhandler mitgibt

  C := TMyClass.Create( CreateEvent ); //Edit Sorry für die blöde Frage

MfG
Emre
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Wie funktioniert der OnCreate-Eventhandler

  Alt 5. Jul 2009, 13:54
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Wie funktioniert der OnCreate-Eventhandler

  Alt 5. Jul 2009, 13:57
Wenn du einen entsprechenden Konstruktor bereitstellst.
Aber ich verstehe noch nicht ganz, auf was du hinaus willst
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie funktioniert der OnCreate-Eventhandler

  Alt 5. Jul 2009, 14:06
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
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#5

Re: Wie funktioniert der OnCreate-Eventhandler

  Alt 5. Jul 2009, 14:18
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

Re: Wie funktioniert der OnCreate-Eventhandler

  Alt 5. Jul 2009, 14:29
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:
var
  c: TMyCLass;
begin
  c := TMyClass.Create(Param1, Param2, Param3);
  // OnCreate
  AfterCreateOf(c);
end;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 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