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).
C'est ce qui est en rouge qui pose problème.
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;
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!
Partager