Hier mal ein neuer Vorschlag...
Delphi-Quellcode:
type
TMyCustomForm = class(TForm)
private
FOnCreate:TNotifyEvent;
public
class procedure addOnCreate(EventName:string);
constructor create(AParent: TControl); reintroduce;
end;
implementation
var FOnCreateEventName:string;
{ TMyForm }
class procedure TMyCustomForm.addOnCreate(EventName: string);
begin
FOnCreateEventName := EventName;
end;
constructor TMyCustomForm.create(AParent: TControl);
var _Create: TMethod;
begin
_Create.Code := MethodAddress(FOnCreateEventName);
_Create.Data := Self;
if assigned(_Create.Code) then
FOnCreate := TNotifyEvent(_Create)
else
FOnCreate := nil;
if assigned(FOnCreate) then
FOnCreate(Self);
end;
Aufruf...
Delphi-Quellcode:
type
TMyForm = class(TMyCustomForm)
published
procedure FormCreate(Sender: TObject);
end;
:
begin
MyForm.addOnCreate('FormCreate');
MyForm:=TMyForm.create(Self);
end;
procedure TMyForm.FormCreate(Sender: TObject);
begin
end;
Bei dieser Vorgehensweise könnte man die Übergabe auch über den Konstruktor machen? oder nicht, weil dann das Application.CreateForm nicht geht?
Ich wollte dir eigentlich konkreter helfen, mit deinem Quellcode. Aber ich finde hier leider nirgends mal einen zusammenhängenden Quellcode von dir und dein Demo ist nur eine EXE. Vermutlich bin ich einfach nur blind.
Naja, egal. Ich vermute mal das dir das sowieso wieder nicht gefällt.
Wir drehen uns hier sowieso im Kreis. Du willst das nicht übergeben aber irgendwo must du das definieren.
Ob nun in einer externen Datei oder direkt beim initialisieren.
Gruss
Thorsten