AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anonyme Methode als Eventhandler - geht nicht?

Ein Thema von Ralf Kaiser · begonnen am 31. Aug 2010 · letzter Beitrag vom 31. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#1

Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 19:55
Delphi-Version: 2010
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

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

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 19:59
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:01
Eine Prozedur ist halt was anderes als eine Methode
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:08
Theoretisch sollte es gehn, aber du versuchst hier eine Procedur an etwas zu übergeben, welches eine Methode erwarted.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:09
Eine Prozedur ist halt was anderes als eine Methode
Allerdings lautet der offizielle Name dieses Konstruktes "Anonyme Methode"!
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:16
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:17
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'
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:20
Was ich dann nicht verstehe ist dann aber, dass so etwas funktioniert.
Ralf Kaiser
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:23
In diesem Fall handelt es sich ja um einen Funktionszeiger und kein Methodenzeiger
Markus Kinzler
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#10

AW: Anonyme Methode als Eventhandler - geht nicht?

  Alt 31. Aug 2010, 20:25
Das Event ist vom typ "reference to procedure". Nur dann kannst Du diese Event zuweisen bei Klassen.
Lars
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:00 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