Bonjour

J'aimerai faire une feuille qui force l'utilisateur à attendre une durée définie par lui, en montrant la progression de l'attente.
La variable Attendu correspond au temps déjà écoulé en minutes depuis le début du traitement (avant que la feuille d'attente passe en ShowModal).
La variable IntervalleUser correspond au temps d'attente en minutes entré par l'utilisateur (au tout début).

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var
  FormAttente: TFormAttente;
  Tmp : real ;
  TpsEcoule : real ;

procedure TFormAttente.FormActivate(Sender: TObject);
begin
  G_TpsRestant.Progress := trunc(Unit1.Attendu*100/Unit1.IntervalleUser) ;
  TpsRestant.Caption := FloatToStr(Unit1.IntervalleEnvoi-Unit1.Attendu) ;
  Tmp := 0 ;
  Timer_DelaiEntr.Interval := 5000 ;
  Timer_DelaiEntr.Enabled := true ;
end;

procedure TFormAttente.FormDeactivate(Sender: TObject);
begin
  Timer_DelaiEntr.Enabled := false ;
end;

procedure TFormAttente.Timer_DelaiEntrTimer(Sender: TObject);
begin
  if G_TpsRestant.PercentDone < 100 then
     begin
      //Compteur du temps écoulé en % de la duree totale en min
      G_TpsRestant.AddProgress(trunc((Timer_DelaiEntr.Interval/60000)*100/Unit1.IntervalleUser)) ;
      if tmp >=30 then
         begin
            //Temps restant en min
            TpsRestant.Caption := FloatToStr(StrToFloat(TpsRestant.Caption)-0.5) ;
            tmp := 0 ;
         end
         else
         begin
            //Compteur du temps écoulé en s
            tmp := tmp+(Timer_DelaiEntr.Interval/1000) ;
         end ;
      if G_TpsRestant.PercentDone = 100 then FormAttente.close ;
     end
     else
     begin
         FormAttente.close ;
     end ;
end;

procedure TFormAttente.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  FormAttente.ModalResult := mrOK ;
end;
C'est ce qui est en rouge qui pose problème.
Cela donne une valeur en minute. Du coup tres proche de 0. AddProgress n'accepte que des entiers. Donc il faut arrondir... Mais là trunc renvoie 0...
Du coup la barre n'avance pas.

Est-ce que quelqu'un aurait une idée?? Merci d'avance!