![]() |
Dynamisch erzeugte Event Handler
Hallo lieber Delphi-Praxis Community,
ich habe eine Klasse die jeweils ein Shape und Ein Timer beinnhaltet. Diese wird je nach anforderung beliebig oft erzeugt, nun will ich eine OnTimer Event einfügen was immer eine prozedur auslöst. Dabei scheiter ich leider aktuell da ich nicht weis wie man einem NotifyEvent eine procedur zuordnet.
Delphi-Quellcode:
mit freundlichen grüßen Georgauto[index].TmrMovement := TTimer.Create(Form1); With auto[index].TmrMovement do begin enabled := true; interval := 30; name := 'TmrMovement' + IntToSTr(Index); end; |
AW: Dynamisch erzeugte Event Handler
Du kannst einen beliebigen TNotifyEvent nehmen und zuweisen.
Delphi-Quellcode:
type
TDeineKlasse = class(TIrgendwas) private procedure TimerProc(Sender: TObject); ... end; ... DeinTimer.OnTimer := TimerProc; |
AW: Dynamisch erzeugte Event Handler
Das war auch meine erste Idee wobei dann wenn man die
Prozedur Namen mit Klammer schreibt folgender fehler kommt:
Delphi-Quellcode:
Und wenn man den Prozedur Namen mit Klammern am Ende schreibt:
[Fehler] Unit1.pas(76): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'
Delphi-Quellcode:
[Fehler] Unit1.pas(76): Inkompatible Typen: Liste der Parameter ist unterschiedlich
|
AW: Dynamisch erzeugte Event Handler
Wieso schreibst Du das mit Klammer?
|
AW: Dynamisch erzeugte Event Handler
Kann es sein, dass du eine klassenlose Prozedur dem Event zuweisen willst? Das geht nämlich nicht. Die Definition von
Delphi-Quellcode:
ist
TNotifyEvent
Delphi-Quellcode:
. Die Methode muss also einen Parameter vom Typ TObject entgegennehmen und eine Instanzmethode einer Klasse sein.
procedure(Sender: TObject) of object;
Also nicht
Delphi-Quellcode:
sondern z.B.
procedure meineTimerProzedur(Sender:TObject)
Delphi-Quellcode:
procedure TMeinFormular.meineTimerProzedur(Sender:TObject)
Den Grund dafür habe ich nie ganz verstanden. Wäre das nicht so, könnte man auch anonyme Prozeduren als Eventhandler setzen. Vielleicht ist das aber auch besser so. Würde man das brutal ausnutzen wird das sicher unübersichtlich... |
AW: Dynamisch erzeugte Event Handler
Zitat:
Delphi-Quellcode:
ist einfach etwas anderes als eine
TMethod
Delphi-Quellcode:
. Und wir wollen ja nicht mehr prozedural programmieren.
TProcedure
Ich fasse noch einmal zusammen: Zitat:
Zitat:
Zitat:
|
AW: Dynamisch erzeugte Event Handler
Ok danke :)
so wie ihr es erklärt habt habe ich es jetzt endlich richtig verstanden ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr. |
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 by Thomas Breitkreuz