Bonjour
La documentation Embarcadero dit ceci:
Sur le principe, pas de problème ! Sauf que ça impose de définir TProc !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 type TProc = reference to procedure; TMyComponent = class(TComponent) private FMyEvent: TProc; public // MyEvent property serves as an event: property MyEvent: TProc read FMyEvent write FMyEvent; // some other code invokes FMyEvent as usual pattern for events end; ... var c: TMyComponent; begin c := TMyComponent.Create(Self); c.MyEvent := procedure begin ShowMessage('Hello World!'); // shown when TMyComponent invokes MyEvent end; end;
Mais si on veut faire de même avec un événement de type TNotifyEvent, impossible !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 TFirstClass = class private FOnTest: TNotifyEvent; published property OnTest: TNotifyEvent read FOnTest write FOnTest; end; .. var FirstClass: TFirstClass; begin FirstClass := TFirstClass.Create; FirstClass.OnTest := procedure (Sender: TObject) begin ShowMessage('Hello'); end; FirstClass.Free;Il n'y a vraiment aucun moyen moyen pour contourner ça facilement ?[dcc32 Erreur] Unit1.pas(48): E2009 Types incompatibles : 'pointeur de méthode et procédure normale'
Papy !
Partager