Einzelnen Beitrag anzeigen

Benutzerbild von Shivan
Shivan

Registriert seit: 5. Mär 2003
Ort: Ravensburg
131 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Ergänzung zu "Events in einer Liste"

  Alt 27. Mär 2007, 18:25
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...);
Markus Stein