Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Anonyme Methode als Eventhandler - geht nicht? (https://www.delphipraxis.net/154201-anonyme-methode-als-eventhandler-geht-nicht.html)

Ralf Kaiser 31. Aug 2010 18:55

Delphi-Version: 2010

Anonyme Methode als Eventhandler - geht nicht?
 
Hallo,

nachdem ich jetzt die XE-Trial installiert habe spiele ich ein wenig mit den (für mich als D2007-User) neuen Möglichkeiten.

Ist es eigentlich nicht möglich eine anonyme Methode als Eventhandler für z.B. OnClick zu benutzen? Ich meine dabei so etwas:

Delphi-Quellcode:
MyButton.OnClick := procedure(Sender: TObject)
                    begin
                      ShowMessage('Ich bin anonym.');
                    end;
So eine Konstruktion lässt sich nicht kompillieren (Fehlermeldung besagt, dass ein Methodenzeiger erwartet wurde aber eine normale Prozedur gefunden wurde).

Auch so etwas führt zu einem Compilerfehler:

Delphi-Quellcode:
MyButton.OnClick := procedure(Sender: TObject) of object
                    begin
                      ShowMessage('Ich bin anonym.');
                    end;
Diesmal ist es dann ein simpler Syntaxfehler :cry:

Sind anonyme Methoden nicht dafür vorgesehen als Eventhandler benutzt zu werden? Kennt sich da jemand aus?

Ciao,
Ralf

SirThornberry 31. Aug 2010 18:59

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Das ging noch nie. Und was verstehst du unter einem anonymen Eventhandler?
Wenn nichts passieren soll, weißt man einfach keinen Eventhandler zu. Und wenn etwas passieren soll muss man natürlich auch den Eventhandler zuweisen in dem das was passieren soll aufgeführt ist.

mkinzler 31. Aug 2010 19:01

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Eine Prozedur ist halt was anderes als eine Methode

himitsu 31. Aug 2010 19:08

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Theoretisch sollte es gehn, aber du versuchst hier eine Procedur an etwas zu übergeben, welches eine Methode erwarted.

Ralf Kaiser 31. Aug 2010 19:09

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Zitat:

Zitat von mkinzler (Beitrag 1046459)
Eine Prozedur ist halt was anderes als eine Methode

Allerdings lautet der offizielle Name dieses Konstruktes "Anonyme Methode"!

SirThornberry 31. Aug 2010 19:16

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Wenn das ganze wirklich mit einer Methode ginge wäre es interessant von welchem Typ dann Self wäre.
Das mit dem Namen der fälschlich verwendet wird kenne ich irgendwo her. Früher gab es mal eine IDE namens Delphi in der man Object-Pascal-Code geschrieben hat. Irgendwann hat man dann einen Object-Pascal-Code mehr geschrieben sondern es war Delphi-Code.

himitsu 31. Aug 2010 19:17

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Zitat:

Zitat von Alfi001 (Beitrag 1046463)
Allerdings lautet der offizielle Name dieses Konstruktes "Anonyme Methode"!

Egal wie es heißt.
Eine "Methode" liegt in einer Klasse und ohne Klasse ist es eine Funktion/Prozedur.

Zitat:

[DCC Fehler] Unit9.pas(32): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

Ralf Kaiser 31. Aug 2010 19:20

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Was ich dann nicht verstehe ist dann aber, dass so etwas funktioniert.

mkinzler 31. Aug 2010 19:23

AW: Anonyme Methode als Eventhandler - geht nicht?
 
In diesem Fall handelt es sich ja um einen Funktionszeiger und kein Methodenzeiger

daywalker9 31. Aug 2010 19:25

AW: Anonyme Methode als Eventhandler - geht nicht?
 
Das Event ist vom typ "reference to procedure". Nur dann kannst Du diese Event zuweisen bei Klassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.
Seite 1 von 2  1 2      

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