Laut der gewählten Sparte möchtest du also einen neuen Beitrag für die Code-Library vorschlagen?
Zur Frage:
Im Grunde funktioniert das so, dass die Klasse intern die Fehler abfängt und nur das Event auslöst statt die Fehler direkt als
Exception an den Aufrufer weiterzuleiten.
Beispiel:
Delphi-Quellcode:
type
TOnLogEvent = procedure(Sender: TObject; ALogText: String) of object;
TBla = class
private
FOnLog: TOnLogEvent;
procedure DoLog(AText: String);
public
property OnLog: TOnLogEvent read FOnLog write FOnLog;
end;
TBlaForm = class(TForm)
...
private
procedure TestLogEvent(Sender: TObject; ALogText: String);
end;
omplementation
procedure TBla.DoLog(AText: String);
begin
if Assigned(FOnLog) then
FOnLog(Self, AText);
end;
procedure TBla.Something...
begin
...
try
...
except
DoLog('Fehler');
end;
end;
procedure TBlaForm.TestLogEvent(Sender: TObject; ALogText: String);
begin
end;
...
MyBla.OnLog := TestLogEvent;
...
Du deklarierst also eine entsprechende Eigenschaft und weist der eine entsprechende Methode zu.
// EDIT:
String als Typ? Du willst doch eine entsprechende Methode zuweisen, die aufgerufen wird, wenn das Event ausgelöst wird...