Bonjour,
C'est encore moi...
J'ai créé une classe TDoubleSMS qui permet d'envoyer deux SMS à 8 secondes d'intervalle.
J'ai donc déclaré (en résumé) :
Code Delphi :
TDoubleSMS = Class(TComponent)
Private
FTimer : TTimer;
procedure TimerExecute(sender: TObject);
Public
Constructor Create(aOwner : TComponent);
Destructor Destroy;
end;
Sur le constructeur, j'envoie un premier SMS et je crée un timer pour le second:
Code Delphi :
FTimer := TTimer.Create(self);)
With FTimer do begin
Interval := 8000;
OnTimer := TimerExecute;
Enabled := True;
end;
Sur le destructeur, idéalement, je voudrais libérer proprement le timer :
Code Delphi :
if FTimer <> nil
then FTimer.Free;
Tout marche bien, mais... mon problème est que je ne parviens pas à appeler le destructeur à la fin du TimerExecute, i.e. après l'envoi du second SMS... (j'ai mis un point d'arrêt sur le destroy, et malheureusement il n'est jamais déclenché...)
J'ai essayé en appelant directement le destroy dans TimerExecute, mais ça ne fonctionne pas (en même temps, appeler un destroy dans une procedure de la classe, je ne trouve pas ça très joli...).
Je me demandais s'il y avait un moyen, en donnant à ma classe un indicateur (boolean ?, appelons le bTermine...) d'envoi du second SMS, de déclencher un événement qui appellerait le destroy. "bTermine" serait donc initialisé à false par le constructeur et valorisé à true après l'envoi du second SMS. L'événement "OnTermine" serait donc déclenché par le changement d'état de bTermine. Et c'est là où je bloque...

J'ai essayé quelques trucs en observant des sources de composants, mais sans résultat... Auriez-vous une petite explication à me donner ? Un début de piste ? (ou une autre façon de faire ?)
Simon