Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Object-Pascal / Delphi-Language (https://www.delphipraxis.net/35-library-object-pascal-delphi-language/)
-   -   Delphi Ereignisse benutzen ohne ein Object zu erzeugen (https://www.delphipraxis.net/6621-ereignisse-benutzen-ohne-ein-object-zu-erzeugen.html)

negaH 17. Jul 2003 02:40


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:
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;
Oder man arbeitet procedural, mit

Delphi-Quellcode:

procedure 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;
Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz