Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ereignisbehandlungsmethode zur Laufzeit zuordnen (https://www.delphipraxis.net/88764-ereignisbehandlungsmethode-zur-laufzeit-zuordnen.html)

BillieJoe90 20. Mär 2007 17:14


Ereignisbehandlungsmethode zur Laufzeit zuordnen
 
Hallo,
ist es möglich, zur Laufzeit einer Komponente, in meinem Fall einer zur Laufzeit erstellten, ihr eine Ereignisbehandlungsmethode zuzuordnen?
Also theoretisch würde der Delphi-Code so aussehen, um es deutlicher zu machen:
Delphi-Quellcode:
procedure meineFunktion;
begin
  // Mach was...
end;

procedure TForm1.Create([...]);
begin
  label := TLabel.Create([...]);

  // Ereignisbehandlungsmethode zuordnen
  label.OnClick := meineFunktion;
end;
Danke schonmal! :hi:

Johannes

hsg 20. Mär 2007 17:19

Re: Ereignisbehandlungsmethode zur Laufzeit zuordnen
 
Du hast es doch schon selber geschrieben, nur die Deklaration deiner Prozedur stimmt nicht:
Delphi-Quellcode:
  TmyForm=Class(TForm)
   private
     procedure RundePreise(Sender: TObject);
   .....

implementation

  .....
  Label1.OnClick := RundePreise;

  .....

Kedariodakon 20. Mär 2007 17:29

Re: Ereignisbehandlungsmethode zur Laufzeit zuordnen
 
Ok, mal so eine kleine Einleitung:

Am besten schaust du einfach nach, von welchem Typ das Ereigniss sein muss, in deinem Fall ist es Delphi-Referenz durchsuchenTNotifyEvent...
Dann schaust du nach, was sich dahinter verbirgt...

Dann komst du zu sowas:
Delphi-Quellcode:
type TNotifyEvent = procedure (Sender: TObject) of object;
Nun hast du schon alles was du brauchst, du brauchst eine Methode in einer Klasse ([oh]of Object;[/oh]) die so deklariert ist:

Delphi-Quellcode:
Procedure MeineMachwasMethode(Sender: TObject)
Und diese kannst du dann einfach zuweisen...
Delphi-Quellcode:
label.OnClick := MeineMachwasMethode;
Das wars dann schon =p

Weitere Infos zum umleiten und Co. gibt es z.B. hier:
"inherited" für umgeleitetes Event

Bye Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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-2025 by Thomas Breitkreuz