Warum funktioniert das zb. nicht?
Code:
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private-Deklarationen }
FOnEvent: TNotifyEvent;
public
{ Public-Deklarationen }
property OnEvent: TNotifyEvent read FOnEvent write FOnEvent;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add ('Button 1 pressed');
if Assigned(FOnEvent) then
FOnEvent(Self);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add ('Button 2 pressed');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Assigned(FOnEvent) then
begin
Memo1.Lines.Add ('Nothing assigned');
FOnEvent := nil;
end
else
FOnEvent := Button2Click;
end;
end.
Zitat:
Zuerst mal würde ich mich von dem Schlagwort TNotifyEvent verabschieden. Das führt hier in die Irre. Du suchst nach einem Tutorial über Eventhandler. TNotifyEvent ist ein Eventhandler unter vielen. Oder genauer gesagt die Deklaration eines Eventhandler-Typen. Ich weiß, noch mehr Fragezeichen
Ein recht gutes Tutorial kommt von Embarcadero selbst.
Und um deine andere Frage zu beantworten: Die große Mehrheit der Eventhandler sind Prozeduren. Allerdings können technisch gesehen genauso gut auch Funktionen verwendet werden.
Danke, lese ich mir mal durch.