AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Object-Pascal / Delphi-Language Delphi Ereignisse benutzen ohne ein Object zu erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignisse benutzen ohne ein Object zu erzeugen

Ein Thema von negaH · begonnen am 17. Jul 2003
Antwort Antwort
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#1

Ereignisse benutzen ohne ein Object zu erzeugen

  Alt 17. Jul 2003, 03:40
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
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 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