![]() |
Ereignisse benutzen ohne ein Object zu erzeugen
Manchmal kommt es vor das man ein Event eine Objectmethode zuweisen möchte die zentral nur eine Aufgabe hat. Man möchte also z.b. einem OnClick eine feste globale Aktion zuordnen die aber möglichst ohne alloziertes Object auskommt.
Es gibt zwei Wege:
Delphi-Quellcode:
Oder man arbeitet procedural, mit
type
TEventSink = class class procedure DoClick(Sender: TObject); end; class procedure TEventSink.DoClick(Sender: TObject); begin Beep; end; // Beispiele der Anwendung procedure TForm1.FormCreate(Sender: TObject); begin Button1.OnClick := TEventSink.DoClick; end; initialization Application.OnIdle := TEventSink.DoClick; finalization end;
Delphi-Quellcode:
Gruß Hagenprocedure DoClick(Self, Sender: Tobject); // Hier ist wichtig das der erste Parameter der in Methoden versteckte Self Paramter ist. // Die weiteren Paramter richten sich nach der Deklaration des verwendeten Events. begin Beep; end; procedure TForm1.FormCreate(Sender: TObject); var N: TMethod; begin N.Data := nil; N.Code := @DoClick; Button1.OnClick := TNotifyEvent(N); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 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