Hi,
wenn ich das richtig erkannt habe, geht die Eventlist hier nur mit einem definierten "Event-Typ". D.h. hier bspw.
TMyEvent = procedure of object;
was somit nur mit Events ohne Parameter geht. Wenn ich dann bspw. Events mit einem Parameter
Sender: TObject verwalten möchte, muss ich eine neue EventList implementieren, welche auf einen neuen TMyEvent geht welcher bspw als
TMyNewEvent = procedure (Sender: TObject) of object
definiert ist. Und dann entsprechend überall TMyEvent durch TMyNewEvent ersetzen?
Oder hab ich da was falsch verstanden? Gibt es keinen Parent in der Ableitungsstruktur, welche alle procedure of object zusammenfasst, egal mit welchen Parametern?
Typprüfung könnte theoretisch doch mit einem Property gemacht werden, welches im Create stattfindet.
.Create(p_MyDefinedEventHandlerType);...
Jedoch wüsste ich nicht welchen Datentyp der Parameter haben sollte... Class of TMyEvent oder so ähnlich, was aber nicht geht.
Und im Add prüfen:
Delphi-Quellcode:
procedure TEventList.Add(Item: TMyAllOfEventsParentType);
begin
if not Item
is m_MyDefinedEventHandlerType
then
raise Exception.Create('
Falscher Funktionstyp verwendet');
um zu vermeiden, dass falsche Methoden (mit falschen Parameter) in die Liste reinkommen.
Und dann an der Aufrufstelle bequem aufrufen via
(Eventlist.Items[i] as TMyblablaEvent)(param1, param2...);