Afficher un "chronometre"

cs_oluha Messages postés 71 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 5 février 2009 - 18 janv. 2005 à 11:22
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 21 janv. 2005 à 15:45
Bonjour

Je souhaiterai afficher une sorte de chronomètre dans mon form, c'est à dire qu'il affiche le temps écoulé pour l'execution d'une étape de mon programme.
J'ai trouvé un composant qui affiche l'heure en directe (TRxClock), j'aimerai la même chose sauf qu'au lieu que ca soit l'heure, il m'affiche le temps passé.
Comment faire ?

Merci

8 réponses

cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
18 janv. 2005 à 12:03
Voici une solution pour faire un chronomètre.

Tu places un composant TTimer tu l'actives et tu met l'interval à 1000 pour chaque seconde.
Tu releves l'heure de depart grâce a la fonction Time que tu places dans une première variable. Puis chaque seconde grace au TTimer tu relèves la nouvelle heure, tu enlèves l'heure de départ à la nouvelle et tu écrit la différence d'heure dans un label.

Voici un exemple ces plus explicite:

Var Tps1, Tps2: TTime;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Tps2 := Time;
Label1.caption := Timetostr(Tps2 - Tps1);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Tps1 := Time;
end;

@+

... c'est un peu dur à expliquer ma soluce... peut être qu'il y a une autre solution ?? en tout cas celle ci fonctionne.
0
cs_oluha Messages postés 71 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 5 février 2009
18 janv. 2005 à 13:51
J'ai utilisé la méthode de Cupracing. Le chrono démarre bien quand j'appuie sur le bouton mais il s'arrête dès que le programme envoie des requêtes sql (c'est à dire au bout de 3sec).
Comment faire ? :-/
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
18 janv. 2005 à 14:10
C'est juste l'affichage qui se coupe ou il n'incremente plus ?

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
cs_oluha Messages postés 71 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 5 février 2009
18 janv. 2005 à 14:45
Il n'incremente plus car à la fin du traitement le chrono reste à 3sec :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
18 janv. 2005 à 14:48
c'est juste l'affichage qui bloque non ? car je vois pas pourquoi le Timer s'arrêterais. Si c'est juste l'affichage il faut alors rafraichir la Form (Refresh).
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
18 janv. 2005 à 14:52
Est ce que par hasard quand tu lances tes requetes sql à la fin de celle ci tu ne quitterais pas automatiquement ton soft??

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
cs_oluha Messages postés 71 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 5 février 2009
18 janv. 2005 à 15:11
Ben non :(

Voilà un bout de mon code quand on clique sur le bouton

Tps1 := Time;
Timer1.enabled := true;
{hdebut := timetostr(time);}
///////////////////////////////
// (1) Transfert des données //
///////////////////////////////
application.Title := 'Transfert des données';
Form1.Caption := 'Déduplication : transfert des données';
form1.Update;
PEtat.caption := 'Transfert';
// on vérifie que la table de déduplication n'existe pas déjà sur SQL Server
Query_move.close;
Query_move.sql.clear; Query_move.sql.add('if exists (select 1 from sysobjects where id object_id(''dedup'+NomTable+''') and type ''U'')');
Query_Move.sql.Add(' drop table dedup'+NomTable);
Query_Move.Prepare;
Query_Move.ExecSQL;
// on transfert la table Access vers SQL Server
BMAccess.Execute;
// on ajoute une colonne qui dit s'il s'agit d'un doublon avec le degré de certitude
Query_Move.close;
Query_move.sql.clear;
Query_move.sql.add('alter table dedup'+NomTable+' add DOUBLON varchar(2) null');
Query_Move.Prepare;
Query_Move.ExecSQL;
// on ajoute une colonne contenant l'identifiant le plus petit du ou des doublons
Query_Move.close;
Query_move.sql.clear;
Query_move.sql.add('alter table dedup'+NomTable+' add NUM_DMIN int null');
Query_Move.Prepare;
Query_Move.ExecSQL;
////////////////////////////////////////////////////////////////////////////////////////////////////
// (2) Détection des doublons suivant le type de déduplication : "Personnes/Foyers" OU "Sociétés" //
////////////////////////////////////////////////////////////////////////////////////////////////////
application.Title := 'Détection des doublons';
Form1.Caption := 'Déduplication : détection des doublons';
form1.Update;
PEtat.caption := 'Détection';
if (RbDedupPers.Checked = true) then
begin
dedup_personnes();
end
else if (RbDedupFoyer.Checked = true) then
begin
dedup_personnes();
end
else if (RbDedupSoc.checked = true) then
begin
dedup_societes();
end
else
begin
messagedlg('Erreur dans le type de déduplication !',mtError,[mbOK],0);
end;

[...]

//////////////////////////////////////////////////////////
// (5) Création des nouveaux fichiers sans les doublons //
//////////////////////////////////////////////////////////
application.Title := 'Création des fichiers';
Form1.Caption := 'Déduplication : créations des fichiers';
form1.Update;
PEtat.caption := 'Création fichiers';
creation_fichiers();
// le traitement est terminé
Timer1.enabled := false;
{hfin := timetostr(time);
duree := timetostr(strtotime(hfin) - strtotime(hdebut));}
application.Title := 'Déduplication terminée';
Form1.Caption := 'Déduplication : traitement terminé';
form1.Update;
{PEtat.caption := 'Temps total : '+duree;}
messagedlg('La déduplication est terminée !',mtInformation,[mbOK],0);
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
21 janv. 2005 à 15:45
0
Rejoignez-nous