Bonjour,
je souhaite tracer dans un mémo tous les évènements liés à ma fiche (onClick sur boutons, onEnter, onExit, etc..) et ceci dynamiquement. C'est a dire sans devoir affecter à chaque évènement un bout de code me permettant de créer une trace.
Je suis parti dans l'optique de récupérer tous les composants de ma fiche (maForme.Component[i]) puis de récupérer les méthodes associées à ce composant via l'unité TypInfo et sa méthode GetPropList.
La ou je pêche c'est comment affecter une méthode unique (qui fera les traces) à tous ses évènements.
J'obtiens les erreurs suivantes :
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
24
25
26
27
28
29
30
31
32
33 type TUneProcedure = procedure (obj : TObject); TForm1 = class(TForm) .... private procedure GestionComposants; procedure maMethodeDeTrace(Sender : TObject); public end; ... procedure TForm1.GestionComposants; var pt : PPropList; i, j, z : Integer; PFonc : TUneProcedure; begin New (Pt); PFonc := maMethodeDeTrace; // Je bloque ici for i := 0 to self.ComponentCount - 1 do begin j := GetPropList(PTypeInfo(Self.Components[i].ClassInfo), [tkMethod], pt); for z := 0 to j - 1 do begin PPropInfo(pt[i]).SetProc := PFonc(Self.Components[i]); // et ici. end; end; end;
[DCC Erreur] Unit1.pas(378): E2009 Types incompatibles : 'procédure normale et pointeur de méthode'
[DCC Erreur] Unit1.pas(384): E2010 Types incompatibles : 'Pointer' et 'procedure, untyped pointer or untyped parameter'
Si vous avez des conseils (autres techniques bienvenues) ou des remarques je suis preneur
Merci d'avance
Partager