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

Langage Delphi Discussion :

Enchainer 2 timer


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 856
    Points : 266
    Points
    266
    Par défaut Enchainer 2 timer
    bonjour,

    je voudrais faire la chose suivante:

    activer une tache 1 seconde toute les 15 secondes ?

    est ce que c'est possible avec le composant timer standart ?
    sinon il y a le composant <timerlist> de la jvcl mais je n'arrive pas à l'utiliser !!
    merci

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Je ne suis pas sûr d'avoir compris.
    Tu veux toutes les 15 secondes exécuter une tâche qui devra durer 1 seconde. C'est ça ?

    Si c'est la cas, un unique Timer suffit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      Start: Cardinal;
    begin
      Start := GetTickCount;
      repeat
        // Ta tâche...
      until GetTickCount - Start > 1000;
    end;
    Maintenant ne connaissant pas la tâche en question... ! A voir.

    @+ Claudius

  3. #3
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    ou
    Citation Envoyé par Cl@udius Voir le message
    Salut

    Je ne suis pas sûr d'avoir compris.
    Tu veux toutes les 15 secondes exécuter une tâche qui devra durer 1 seconde. C'est ça ?

    Si c'est la cas, un unique Timer suffit:
    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
     
     
     
      private
        { Déclarations privées }
        Delai:Integer;
        LAction:Boolean;
        procedure Timer1STAR(Sender: TObject);
        procedure Timer1END(Sender: TObject);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Timer1STAR(Sender: TObject);
    begin
         Dec(Delai);
         if Delai>0 then exit;
         Timer1.Enabled:=False;
         Timer1.OnTimer:=Timer1END;
         Timer1.Enabled:=true;
         LAction:=true;
         // pour utilisé une boucle d'attent dans une proc
         //while LAction do
         //ou simplement par exp: met un CTS de port série à 1
    end;
    procedure TForm1.Timer1END;
    begin
         LAction:=false;
         //met un CTS de port série à 0
         Timer1.Enabled:=False;
         Timer1.OnTimer:=Timer1STAR;
         Delai:=15;// pour ne pas modifier Timer1.Interval:=1000;
         Timer1.Enabled:=true;
     
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
         Timer1.Enabled:=False;
         Timer1.Interval:=1000;
         Delai:=15;
         Timer1.OnTimer:=Timer1STAR;
         Timer1.Enabled:=true;
    end;
    Maintenant ne connaissant pas la tâche en question... ! A voir.

    @+ Claudius
    bien sûr c'est des idée, car on sait pas ce que tu veux exactement

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 856
    Points : 266
    Points
    266
    Par défaut précision
    bonjour,

    merci pour les réponses

    ce que je veux faire exactement:

    changer la couleur d'un label a rouge pendant 1 seconde et ceci toute les 15 secondes


    a+

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    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
      private
        { Déclarations privées }
        Delai:Integer;
        procedure Timer1STAR(Sender: TObject);
        procedure Timer1END(Sender: TObject);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Timer1STAR(Sender: TObject);
    begin
         Dec(Delai);
         if Delai>0 then exit;
         Timer1.Enabled:=False;
         Timer1.OnTimer:=Timer1END;
         Timer1.Enabled:=true;
         label1.font.color:=$FF;
    end;
    procedure TForm1.Timer1END;
    begin
         label1.font.color:=0;
         Timer1.Enabled:=False;
         Timer1.OnTimer:=Timer1STAR;
         Delai:=15;// pour ne pas modifier Timer1.Interval:=1000;
         Timer1.Enabled:=true;
     
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
         Timer1.Enabled:=False;
         Timer1.Interval:=1000;
         Delai:=15;
         Timer1.OnTimer:=Timer1STAR;
         Timer1.Enabled:=true;
    end;

Discussions similaires

  1. Comment faire un Timer de fonction PORTABLE ?
    Par dieuP1guin dans le forum C
    Réponses: 3
    Dernier message: 04/07/2003, 10h44
  2. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  3. [] [Réseau] Anti-timer, anti-idle
    Par clonevince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/01/2003, 22h19
  4. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 15h21
  5. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 00h59

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