Bonjour,
En Delphi j'utilise souvent les procédure et fonction "of object". J'essai de faire la même chose en C#
Exemple Delphi :
Déclaration de la procédure "of object"
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TLogProc = procedure(Const Texte : String) of object;
Branchement dans une classe
Code Delphi : 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 TMaClasse = class(TMonAncetre) private FLog : TLogProc; ... procedure DoLog(Const Texte : String); public property LogProc : TLogProc write FLog; ... procedure FaireQuelqueChoseEtLeLogger; end; procedure TMaClasse .DoLog(Const Texte : String); begin if (Assigned(FLog)) then FLog(Texte); end; procedure TMaClasse .FaireQuelqueChoseEtLeLogger; begin ... DoLog('Un texte de Log'); ... end;
Utilisation
Code Delphi : 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 procedure FrmTest.Logguer(Const Texte : String); begin Memo.Lines.Add(Texte); end; procedure FrmTest.FaireQuelqueChose; begin MonObjet := TMaClasse .Create; try MonObjet.LogProc := Logguer; MonObjet.FaireQuelqueChoseEtLeLogger; finally if (Assigned(MonObjet)) then FreeAndNil(MonObjet) end; end;
J'ai pensé au délégué pour le faire mais je ne suis pas encore très à l'aise avec.
Suis-je sur la bonne voie et dans ce cas pouvez-vous m'éclairer un peu plus sur sur la mise en oeuvre ?
Ou alors est-ce que je me trompe complètement ? Mais dans ce cas, est-ce possible et comme le faire ?
Partager