Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Procedure als Property (https://www.delphipraxis.net/160937-procedure-als-property.html)

Blamaster 8. Jun 2011 17:44

Delphi-Version: 7

Procedure als Property
 
Hi,

ich habe eine eigene Klasse erstellt. Nun würde ich gerne eine eigene procedure erstellen die wie beispielsweise ein OnClick Ereignis arbeitet.

Sinn der Sache soll sein, dass ich im Hauptprogramm eine Instanz der Klasse erstelle und eine Procedure übergebe. (MeineKlasse.OnEigenesEvent := Hauptprogramm.OnEigenesEvent). Nun soll ein Aufruf der Procedure innerhalb meiner Klasse das OnEigenesEvent Ereignis im Hauptprogramm aufrufen.

Wie ist das umsetzbar ?

Gruß Yannic

s.h.a.r.k 8. Jun 2011 17:47

AW: Procedure als Property
 
Delphi-Quellcode:
TMyEvent = procedure () of object;
// hier könntes du auch noch eigene Parameter einfügen
// schau dir mal TNotifyEvent an

TBlub = class
private
  FOnMyEvent : TMyEvent;
  procedure CallOnMyEvent();
public
  property OnMyEvent : TMyEvent read FOnMyEvent write FOnMyEvent;
end;

procedure TBlub.CallOnMyEvent();
begin
  if Assigned(FOnMyEvent) then
    FOnMyEvent();
end;

Blamaster 8. Jun 2011 19:26

AW: Procedure als Property
 
Danke :)

himitsu 8. Jun 2011 21:13

AW: Procedure als Property
 
Delphi-Quellcode:
type TMyEvent = procedure
... function geht natürlich auch

Delphi-Quellcode:
of object
... das ist ein Methoden-Zeiger (also in einer Klasse deklariert).
Ein Prozedur-Zeiger wäre ohne dieses.

Delphi-Quellcode:
type TMyEvent = reference to procedure
wäre eine Referenz auf irgendwas (Prozedur/Funktion, Methode oder sogar eine anonyme Methode)
Gibt es aber erst seit ein paar Delphiversionen.


@Blamaster: Du hast nicht zufällig ein "Delphi 7 Personal"?
Wenn nicht, dann hättest du dir das bekannte OnClick auch selber mal ansehen und dort abgucken können. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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