![]() |
OnCreate bei eigener Klasse?
Kann man einer selbst erstellten Klasse, die von TObject abgeleitet wurde, irgendwie die Eigenschaft OnCreate mitgeben, die dann eine Prozedur aufruft, die bei der Erstellung automatisch ausgeführt wird? :gruebel:
|
Re: OnCreate bei eigener Klasse?
Delphi-Quellcode:
..oder so ähnlich... :mrgreen:
USES
Classes; TYPE TMyType = CLASS(TObject) PRIVATE FOnCreate : TNotifyEvent; PUBLISHED CONSTRUCTOR Create; PROPERTY OnCreate : TNotifyEvent READ FOnCreate WRITE FOnCreate; END; implementation CONSTRUCTOR TMyType.Create; BEGIN INHERITED; IF Assigned(FOnCreate) THEN FOnCreate(NIL); END; Gruß Stephan |
Re: OnCreate bei eigener Klasse?
Besser wäre:
Delphi-Quellcode:
Dann gibts das Objekt das erzeugt wurde auch gleich mit.
constructor TMyType.Create;
begin inherited; if Assigned(FOnCreate) thenFOnCreate(SELF); end; grüße, daniel |
Re: OnCreate bei eigener Klasse?
Danke schön :thuimb:
|
Re: OnCreate bei eigener Klasse?
Es reicht einfach in der published Section
Delphi-Quellcode:
hinzuschreiben, da es nen vererbtes Ereignis ist brauch man da selbst nichts mehr rumzuwurschteln.
published
property onCreate; mfg phlux :hi: |
Re: OnCreate bei eigener Klasse?
Zitat:
Ähm... ich glaube TObject hat kein OnCreate... mfG mirage228 |
Re: OnCreate bei eigener Klasse?
Stimmt :mrgreen: In letzter Zeit geb ich ja nur noch Müll von mir :roll: habs grad nachgeguckt, hast recht, existiert nicht in der Basisklasse, aber solltest du irgendwie mal was von TPanel, TLabel, etc. ableiten dann klappt das, weils halt da schon integriert ist, so nochmal gerettet :mrgreen:
|
Re: OnCreate bei eigener Klasse?
Moin!
Ähm, eine Frage Jungs: Wie stellt ihr euch das denn vor?? Mal so als Abhandlung über den Ablauf, vielleicht versteht ihr dann meine Bedenken: 1. Man kann eine Methode dem OnCreate erst zuweisen, wenn man die Klasse instanziiert habe... 2. Das OnCreate wird im Constructor der Klasse aufgerufen, wenn eine Methode dem OnCreate zugewiesen wurde... Nochmal zur Verdeutlichung:
Delphi-Quellcode:
Bei TCustomForm Elementen wird das OnCreate ausgelöst durch das erhalten der WM_CREATE Botschaft von Windows - die nach dem CreateWindow() Aufruf gesendet wird. In dieser Message muss man das erstellen des Fenster, grob gesagt, "bestätigen". Daher kommt
Var
Test : TTest; Begin Test := TTest.Create; // <-- hier wird OnCreate aufgerufen, wenn vorhanden Test.OnCreate := MyProc; // <-- hier kann erst OnCreate zugewiesen werden... End; das OnCreate nach dem Constructor und vor dem eigentlichen endgültigen existieren des Fensters... MfG Muetze1 |
Re: OnCreate bei eigener Klasse?
Zitat:
Gut vergesst alles, was ich da oben von mir gegeben hab, ist logischerweise Unfug :zwinker: Gruß Stephan |
Re: OnCreate bei eigener Klasse?
Ist ja eigentlich widersprüchlich die ganze Sache. Wofür benötige ich bei einem TObject ein OnCreate-Event?
Wenn irgendwas beim Create ausgeführt werden soll, dann ab ins Create. Wenn aber der Benutzer, der solch ein Objekt verwendet, noch was beim Create machen will, dann leite es doch von TComponent ab. Denn nur dann kann man auch im Designmodus das OnCreate setzen. :gruebel: Was meint ihr? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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