Bonjour tlm

je viens demander de l'aide quant à un problème de mémoire la fermeture de mon application... je m'explique:

Je créé un Timer( =>Timer1:= TTimer.Create(nil) ) dans un composant en cliquant sur un bouton qui apparait lorsque mon composant a le focus. Puis à l'évènement OnTimer, selon les conditions de tests, je laisse tourner le timer ou je le libère : Timer.free.

mon soucis est que je n'arrive pas à comprendre pourquoi ici ça ne marche pas... lorsque j'utilise ce timer après un clic sur ce fameux bouton, tout se déroule comme je le souhaite, mais à la fermeture de l'appli, une erreur d'adresse:
Exception EAccessViolation dans le module feuille_test.exe dans FFFFF001.

Violation d'accès à l'adresse 00000001. Lecture de l'adresse 00000001.

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
 
procedure TMonComposant.BtnClick(sender : TObject);
begin
   inherited;
   Btn.visible:= false;
   Btn.ImgClick(self);
   Timer1:= TTimer.Create(nil);
   Timer1.Interval:= 600;
   Timer1.OnTimer:= OnTimer1;
   Timer1.Enabled:= true;
end;
 
procedure TMonComposant.OnTimer1(sender : TObject);
begin
 
   if (condition1) then Btn.Visible:= false
   else begin
      if (self.Focused) then Btn.visible:= true;
      timer1.Free;
   end;
end;

Voila, j'espère avoir fourni toutes les infos nécessaires pour comprendre mon problème
merci d'avance

ludo