![]() |
Ereigniss in DLL auslagern
Hallo,
kann man ein Ereigniss in einer DLL auslagern? Ich meine Zum Beispiel:
Delphi-Quellcode:
Aufruf:
procedure Edit(Sender: TObject);
begin if TEdit(Sender).Color = clBlack then begin TEdit(Sender).Color:=clGreen; end else begin TEdit(Sender).Color:=clBlack; end; end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Edit1.OnEnter:=Edit; Edit1.OnExit:=Edit; end; |
Re: Ereigniss in DLL auslagern
push
|
Re: Ereigniss in DLL auslagern
Ereignisse müssen gewöhnlich Methoden sein. Wenn du nichts gegen eine schmutzige Variante hast...
Delphi-Quellcode:
Der Punkt ist, dass Methodenzeiger aus einem Zeiger auf Self und einem Zeiger auf den Code bestehen, daher ist die Zuweisung etwas komplizierter.
procedure Edit(Self: TObject; Sender: TObject); //Methoden haben den impliziten Parameter Self
begin if TEdit(Sender).Color = clBlack then begin TEdit(Sender).Color:=clGreen; end else begin TEdit(Sender).Color:=clBlack; end; end; procedure TForm1.FormCreate(Sender: TObject); var Event: TNotifyEvent; //Das ist der Type des Events (procedure(Sender: TObject) of object) begin TMethod(Event).Data:=nil; //Als Self wird nil übergeben, sonst eben was anderes eintraagen TMethod(Event).Code:=@Edit; Edit1.OnEnter:=Event; Edit1.OnExit:=Event; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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