![]() |
Events für Interfaces ?
Tachchen,
bei einem Objekt würde ich ein Event ja so Deklarieren
Delphi-Quellcode:
Aber irgendwie sieht es etwas "unschön" aus, wenn ich jetzt eine Objekt-Methode in ein Interface reinmatsche.
TInsightEvent = Procedure(Const Sender: IInsightItem) of Object;
Property OnInsight: TInsightEvent ...
Delphi-Quellcode:
Allerdings finde ich dieses Interface-Event dann doch etwas "umständlich".
IInsightEvent = Interface
['{13378CB0-A03F-4056-853B-5DDF693C36A9}'] Procedure OnClick(Const Sender: IInsightItem); End; Property OnInsight: IInsightEvent ... Hab 4 verschiedene Event-Typen und da ich niemanden Zwingen will, immer alle zu deklarieren, selbst wenn nur Eines verwendet wird, müßte ich ja alle 4 in je ein eigenes Interface verfrachten. Und zusätzlich würde ich denjenigen Nutzer auch noch zwingen sein Verwaltungsobjekt (oder sonstwas) in ein Interface zu verwandeln. :oops: Ja, was ist also nun besser/schöner/praktischer/einfacher/...? |
Re: Events für Interfaces ?
Zitat:
Es ist auch durchaus zulässig und sinnvoll, etwa solche Deklarationen in eine Interface-Deklaration zu packen:
Delphi-Quellcode:
Solange man sich nicht auf COM-Terrain begibt, besteht kein Hinderungsgrund Interfaces und Objekte zu mischen.
procedure DoSomethingWith(AObject: TObject);
|
Re: Events für Interfaces ?
Nja, die Methoden-Namen kann man in der Objektimplementation ja umleiten und muß sich nicht mit den vorgegebenen Namen abfinden.
Aber OK, dann verwende ich weiterhin die Objekt-Methoden. :-D (war nur grad durch die OpenToolsAPI etwas in Verleitung geraten) |
Re: Events für Interfaces ?
Du kannst ja eine Basisklasse (z.B. abgeleitet von TInterfacedObject) erstellen, welche die Methoden implementiert. Wenn man dann will kann man in einer Ableitung die Methode überschreiben und wenn nicht wird einfach die leere Methode aus der Basisklasse ausgeführt.
Wenn man sein Objekt von einer anderen Basisklasse ableitet muss man sie dann halt trotzdem selber nochmal implementieren... Aber da muss ich Uwe recht geben: Was spricht dagegen das TInsightEvent als procedure of object zu deklarieren? Das "of object" sagt ja eigentlich nur aus, dass es sich nicht um eine klassische Prozedur handelt, sondern um eine Methode. |
Re: Events für Interfaces ?
Du weist aber, dass man bei COM ein IDispatch-Interface als Event-Empfänger übergibt?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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