@Uwe Raabe
Zitat:
Entschuldige, aber das ist Blödsinn! Die Deklaration eines Events ist die Stelle, an der die Parameternamen festgelegt werden.
Sorry, aber ich fürchte, du hast mich fallsch verstanden. Um es mal anders auszudrücken:
Delphi-Quellcode:
procedure Tfoo.xxx
begin
GetNamen(Strasse, Hausnummer)
end
function Getnamen(Street, Number)
Begin
End
End;
Natürlich müssen die Deklarationen jeder der beiden Methoden dabei gleich lauten und die Reihenfolge und Typen der Parameter übereinstimmen.
Damit das jetzt nicht missverstanden wird, mache ich mal ein etwas ausführlicheres Beispiel:
Delphi-Quellcode:
type
// Deklaration des Events
TMyEvent = procedure(Street: string; Country: string) of object;
TMyClass = class
private
FOnReport: TMyEvent;
public
procedure DoSomethingAndReport();
property OnReport: TMyEvent read FOnReport write FOnReport;
end;
TForm1 = class(TForm)
private
procedure ReportHandler(Street: string; Country: string);
end;
implementation
procedure TMyClass.DoSomethingAndReport();
var
tmpStreet, tmpCountry: string;
begin
tmpStreet := GetStreet(); // Irgendeine Methode ausführen
tmpStreet := GetCountry(); // Irgendeine Methode ausführen
if Assigned(FOnReport) then
FOnReport(tmpStreet, tmpCountry); // Hier wird das Event ausgelöst
end;
// EventHandler für TMyClass.OnReport
// Hier könnten die Parameter Bezeichner sogar schon von der Event-Deklaration abweichen
// Wichtig sind die Datentypen. Die müssen in Reihenfolge und Typ mit der Event-Deklaration übereinstimmen
procedure TForm1.ReportHandler(Street: string; Country: string);
begin
ShowMessage(Street + sLineBreak + Country);
end;