Bonjour à tous,
Voilà déjà quelques temps que j'essaie d'intégrer un composant TTimer à un de mes composants.
Le problème est que je n'arrive pas à trouver comment surcharger le OnTimer. :mur:.
Quelqu'un saurait-il me débloquer ?
Merci d'avance.
Version imprimable
Bonjour à tous,
Voilà déjà quelques temps que j'essaie d'intégrer un composant TTimer à un de mes composants.
Le problème est que je n'arrive pas à trouver comment surcharger le OnTimer. :mur:.
Quelqu'un saurait-il me débloquer ?
Merci d'avance.
Montre un bout de code avec ce que tu as essayé de faire.
Il n'y a aucune surcharge du TTimer dans ce que tu veux faire.
Tu crées leTimer dans le constructeur de ton composant,
Tu lui assignes un événement de type TNotifyEvent dans OnTimer,
Tu définis un Interval,
Et tu le détruis à la destruction de ton composant.
;)
dans la pratique pour t'aider un peu :
Code:
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 type TMaClasse= classe private fTimer : TTimer; protected procedure DoTimer(Sender: TObject); public constructor Create; destructor Destroy; override; end; implementation constructor TMaClasse.Create; begin fTimer := TTimer.Create(nil); fTimer.OnTime := DoTimer; end; destructor TMaClasse.Destroy; begin fTimer.Free; end; procedure TMaClasse.DoTimer(Sender: TObject); begin // ton code ici end;
Merci à tous :ccool:.
Ce sont bien les infos que je n'avais pas trouvées.
J'ai eu beau fouiller le code source du TTimer.
J'ai bien essayé de surcharger la procédure Timer :aie:...
Je n'ai pas pensé au DoTimer, comme le DoExit.
Je commence donc à supposer que, quand on veut affecter dynamiquement du code à un événement, on le place dans une procédure nommée DoEvènement.
Ce qui ne s'invente pas ! 8O
Je n'ai rien trouvé d'aussi clair que vos explications concernant le codage des évènements :furax:, même pas dans l'excellent ouvrage de Merlin et Paul, en tout cas celui de D7.
Si quelqu'un peut m'indiquer un ouvrage (même cher) qui traite du sujet, je suis preneur :P
Merci encore.
Le nom de la méthode importe peu ;). Elle doit juste respecter le prototype attendu par l'événement. Dans le cas de OnTimer, TNotifyEvent (une procédure d'objet avec Sender: TObject en paramètre).
Le plus simple si tu as un doute sur l'implémentation d'un événement, ajoute le composant sur une fiche, double-click sur l'événement dans l'inspecteur d'objet et fais un copier/coller de la déclaration dans ton composant ;).Code:
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 type TMaClasse= class private fTimer : TTimer; protected procedure WakeUp(Sender: TObject); public constructor Create; destructor Destroy; override; end; implementation constructor TMaClasse.Create; begin fTimer := TTimer.Create(nil); fTimer.OnTimer := WakeUp; end; destructor TMaClasse.Destroy; begin fTimer.Free; end; procedure TMaClasse.WakeUp(Sender: TObject); begin // ton code ici end;
Si tout est bon click sur :resolu: stp.
Ah oui, ok, compris.
Merci pour ces précisions.