Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigenes Event anlegen + Event Handler (https://www.delphipraxis.net/166558-eigenes-event-anlegen-event-handler.html)

arc 18. Feb 2012 17:18

Delphi-Version: 7

Eigenes Event anlegen + Event Handler
 
Ich habe bereits nach Event Handler und method pointer im Forum gesucht, aber nur die Variante gefunden, daß jemand einen eigenen Eventhandler zuweisen möchte. Das habe ich bereits gemacht und das klappt auch.

Nun habe ich mir jedoch eine eigene Button Klasse geschrieben und möchte dieser Klasse ein OnClick Event spendieren, daß ich später mit einem Eventhandler in der Form MyButton.OnClick:=bla; belegen kann.

Nun die Frage, wie legt man OnClick an? Ich habe es als OnClick:TProcedure; angelegt, da kommt natürlich der Fehler "Incompatible Types: regular procedure and method pointer". Als OnClick:TMethod; ging es auch nicht. Wie legt man soetwas an?

Hier etwas Code dazu:
Delphi-Quellcode:
     TToggleButton = class(TConnector)
                      protected
                        selected:boolean;

                      public
                        OnClick:TProcedure;
                        property isSelected:boolean read selected write selected;

                        constructor Create(newtarget:TModule); virtual;
                        procedure OnClickActive;
                        procedure OnClickBypass;
                    end;
OnClick soll je nach Anwendungsfall durch OnClickActive oder OnClickBypass ersetzt werden. Das könnte ich natürlich auch anders lösen, aber ich möchte gern etwas neues lernen.

Hat jemand eine Idee? Danke!

Uwe Raabe 18. Feb 2012 17:25

AW: Eigenes Event anlegen + Event Handler
 
Delphi-Quellcode:
TNotifyEvent

arc 18. Feb 2012 17:28

AW: Eigenes Event anlegen + Event Handler
 
Besten Dank! So funktioniert es:

Delphi-Quellcode:

     TToggleButton = class(TConnector)
                      protected
                        selected:boolean;

                      public
                        OnClick:TNotifyEvent;
                        property isSelected:boolean read selected write selected;

                        constructor Create(newtarget:TModule); virtual;
                        procedure OnClickActive(Sender:TObject);
                        procedure OnClickBypass(Sender:TObject);
                    end;

Furtbichler 18. Feb 2012 17:44

AW: Eigenes Event anlegen + Event Handler
 
Ich bezweifle das. Ein Ereignis ist eine vom Anwender der Klasseninstanz zu belegende Methode.
So ist es richtig
Delphi-Quellcode:
Type
  TMyClass = Class
    FOnDoSomething : TNotifyEvent;
  public
    property OnDoSomething : TNotifyEvent Read FOnDoSomething write FOnDoSomething;
  End;

arc 18. Feb 2012 18:07

AW: Eigenes Event anlegen + Event Handler
 
Ah, wieder was gelernt. Danke!

Aphton 18. Feb 2012 18:12

AW: Eigenes Event anlegen + Event Handler
 
da fehlt das Schlüsselwort "property" davor...

Furtbichler 18. Feb 2012 18:18

AW: Eigenes Event anlegen + Event Handler
 
Zitat:

Zitat von Aphton (Beitrag 1151751)
da fehlt das Schlüsselwort "property" davor...

Stimmt garnicht. :oops:

Nee, danke: Geändert.


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