IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Peut-on mettre en pause 1 TTimer ?


Sujet :

Composants VCL Delphi

  1. #1
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 949
    Par défaut Peut-on mettre en pause 1 TTimer ?
    Bonjour,

    A priori pas (je n'ai rien trouvé)

    Je veux le mettre en pause, càd suspendre le décompte et pouvoir le reprendre là où il en était.

    Merci pour vos idées.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet :resolu: - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 754
    Par défaut
    Hello,

    J'utiliserai un TStopwatch, vous pouvez y trouver dans cette discussion des implémentations intéressantes.
    https://www.developpez.net/forums/d2...pause-reprise/

    et dans celle-ci -> https://stackoverflow.com/questions/...ults-in-win-10
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 949
    Par défaut
    Merci,
    Je vais regarder ça de près.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet :resolu: - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  4. #4
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 634
    Billets dans le blog
    1
    Par défaut Exemple TStopwatch - System.Diagnostics
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
      System.Diagnostics;
     
    type
      TForm1 = class(TForm)
        lblTime: TLabel;
        btnStart: TButton;
        btnPause: TButton;
        btnResume: TButton;
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure btnStartClick(Sender: TObject);
        procedure btnPauseClick(Sender: TObject);
        procedure btnResumeClick(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Déclarations privées }
        FStopwatch: TStopwatch;
        FRunning: Boolean;
        FAccumulated: Int64;
        function FormatTime(Millis: Int64): string;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    function TForm1.FormatTime(Millis: Int64): string;
    var
      MS, S, M, H: Int64;
    begin
      MS := Millis mod 1000;
      S := (Millis div 1000) mod 60;
      M := (Millis div 60000) mod 60;
      H := Millis div 3600000;
      Result := Format('%.2d:%.2d:%.2d.%.3d', [H, M, S, MS]);
    end;
     
    procedure TForm1.btnPauseClick(Sender: TObject);
    begin
      if FRunning then
      begin
        FStopwatch.Stop;
        FAccumulated := FAccumulated + FStopwatch.ElapsedMilliseconds;
        FRunning := False;
      end;
    end;
     
    procedure TForm1.btnResumeClick(Sender: TObject);
    begin
      FStopwatch.Reset;
      FAccumulated := 0;
      FRunning := False;
      lblTime.Caption := '00:00.000';
    end;
     
    procedure TForm1.btnStartClick(Sender: TObject);
    begin
      if not FRunning then
      begin
        FStopwatch := TStopwatch.StartNew;
        FRunning := True;
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Timer1.Enabled := True;
      Timer1.Interval := 100;
      lblTime.Caption := '00:00.000';
      FRunning := False;
      FAccumulated := 0;
      FStopwatch := TStopwatch.Create;
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      TotalMs: Int64;
    begin
      if FRunning then
        TotalMs := FAccumulated + FStopwatch.ElapsedMilliseconds
      else
        TotalMs := FAccumulated;
     
      lblTime.Caption := FormatTime(TotalMs);
    end;
     
    end.
    Nom : Video_2025_11_07-1_edit_0.gif
Affichages : 106
Taille : 276,7 Ko
    On ne peut pas faire confiance à un code qu'on n'a pas entièrement écrit soi‑même, et encore moins à celui qu'on a écrit entièrement. :aie:

  5. #5
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 548
    Par défaut
    Bonjour,
    si tu as une version ancienne de Delphi qui n'a pas de StopWatch, tu peux utiliser QueryPerformanceCounter qui fait la même chose :

    Stopwatch.zip

    A+
    Charly

    Ps : il y a des polices exotiques jointes, mais si tu ne veux pas les installer, tu peux choisir Arial

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. peut on mettre 1 variable ds la fonct° ouverture d'1 popup?
    Par zorba49 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/07/2005, 13h24
  2. Réponses: 2
    Dernier message: 27/03/2005, 17h09
  3. Mettre en pause le Timer !
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 14
    Dernier message: 12/09/2003, 22h32
  4. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 17h18
  5. [TP]Peut-on mettre un commande dos dans le prog?
    Par pierre olmes dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 24/05/2003, 23h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo