Delphi-PRAXiS
Seite 1 von 2  1 2      

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 OnCreate bei eigener Klasse? (https://www.delphipraxis.net/23449-oncreate-bei-eigener-klasse.html)

Bronko 3. Jun 2004 11:01


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:

Steve 3. Jun 2004 11:19

Re: OnCreate bei eigener Klasse?
 
Delphi-Quellcode:
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;
..oder so ähnlich... :mrgreen:

Gruß
Stephan

Sanchez 3. Jun 2004 11:43

Re: OnCreate bei eigener Klasse?
 
Besser wäre:
Delphi-Quellcode:
constructor TMyType.Create;
begin
  inherited;
  if Assigned(FOnCreate) thenFOnCreate(SELF);
end;
Dann gibts das Objekt das erzeugt wurde auch gleich mit.

grüße, daniel

Bronko 3. Jun 2004 12:26

Re: OnCreate bei eigener Klasse?
 
Danke schön :thuimb:

phlux 3. Jun 2004 12:37

Re: OnCreate bei eigener Klasse?
 
Es reicht einfach in der published Section

Delphi-Quellcode:
published
  property onCreate;
hinzuschreiben, da es nen vererbtes Ereignis ist brauch man da selbst nichts mehr rumzuwurschteln.

mfg phlux :hi:

mirage228 3. Jun 2004 12:38

Re: OnCreate bei eigener Klasse?
 
Zitat:

Zitat von phlux
Es reicht einfach in der published Section

Delphi-Quellcode:
published
  property onCreate;
hinzuschreiben, da es nen vererbtes Ereignis ist brauch man da selbst nichts mehr rumzuwurschteln.

mfg phlux :hi:

Hi,

Ähm... ich glaube TObject hat kein OnCreate...

mfG
mirage228

phlux 3. Jun 2004 12:57

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:

Muetze1 3. Jun 2004 13:33

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:
Var
  Test : TTest;
Begin
  Test := TTest.Create;   // <-- hier wird OnCreate aufgerufen, wenn vorhanden
  Test.OnCreate := MyProc; // <-- hier kann erst OnCreate zugewiesen werden...
End;
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
das OnCreate nach dem Constructor und vor dem eigentlichen endgültigen existieren des Fensters...

MfG
Muetze1

Steve 3. Jun 2004 13:41

Re: OnCreate bei eigener Klasse?
 
Zitat:

Zitat von Muetze1
1. Man kann eine Methode dem OnCreate erst zuweisen, wenn man die Klasse instanziiert habe...

:wall: :wall: Logisch... So gehts, wenn man schreibt ohne zu denken :mrgreen:
Gut vergesst alles, was ich da oben von mir gegeben hab, ist logischerweise Unfug :zwinker:

Gruß
Stephan

Stevie 3. Jun 2004 14:30

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 12:22 Uhr.
Seite 1 von 2  1 2      

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