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

C++Builder Discussion :

comment un label s'arrete de clignoter


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut comment un label s'arrete de clignoter
    bonjour ; pour que un label cliniote dans une fiche j'ai utilisé un Timer , je veut apres un moment label s'arrete de clinioté comment je fait.merci d'avance pour votre aide.

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Tu met la propriété Enabled de ton Timer à false

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    saluuuuut , ou je met Timer1->Enabled=false.
    j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
       if(Form3->Label1->Visible==false)
    Form3->Label1->Visible=true;
    else
    {Form3->Label1->Visible=false;}

  4. #4
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Tu peux "simplifier" la fonction de ton Timer en supprimant un test (au final ca change rien, mais c'est juste plus court).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
       Label1->Visible = !Label1->Visible ;
    }
    Pour arrêter ton Timer tu peux placer ton code par exemple dans un bouton arrêter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
       Timer1->Enabled = false ;
    }

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    bonjour.est ce que il ya une possibilité que label s'arrete de clinioté sans cliké sur un bouton d'arret.merci d'avance pour votre aide.

  6. #6
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Oui, mais a quel moment tu souhaite l'arrêt du clignotement?

    Après un certain temps? Après un certain nombre de clignotements? Tu peux utiliser une variable de comptage que tu incrémente dans la fonction de ton Timer, et lorsque cette variable a atteint une valeur, tu met Enabled de ton Timer à false ;

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    salut ,je veut apres un certain nombre de clignotements .
    j'ai utilisé ce code mais ça marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int i=0;
    while(i<20)
       {Form3->Label1->Visible = !Label1->Visible ;
       i++;}
     
       Form3->Timer1->Enabled=false;
    merci d'avance pour votre aide.

  8. #8
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Tu declare une variable de classe de type int dans la section private de ton *.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private:	// Déclarations utilisateur
              int compteur ;
    Tu initialise ton compteur a un endroit donnée (là ou tu le souhaite) :

    Et dans ton Timer tu incrémente la variable et tu teste qu'elle ne dépasse pas une valeur. Si elle dépasse une certaine valeur, tu met Enabled de ton Timer à false ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
        Label1->Visible = !Label1->Visible ;
        compteur = compteur +1 ;
        if(     compteur > 20 )
        {
            Timer1->Enabled = false ;
            Label1->Visible = true ; // ou false si tu veux qu'au final le label soit caché
        }
    }

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    j'ai utilisé ton code mais label clignote encore.

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    j'ai un autre probleme pour la premiere utilisation il marche bien mais quand j'ai voulu refere label s'affiche sans clignotement au début .peut etre s'avient de compteur =0????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fastcall TForm3::TForm3(TComponent* Owner)
            : TForm(Owner)
    {compteur = 0 ;
    peut etre il faut le remetre a 0 a chaque fois .merci d'avance pour votre aide

  11. #11
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Il faut remettre le compteur à 0 et remettre la propriété Enabled du Timer à true, et tu fais ça à l'endroit du code ou tu veut relancer ton clignotement

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    j'ai fait quesque tu ma dit mais il reste le meme probleme , je ne sais pas elle est ou erreur.merci pour votre aide

  13. #13
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Tu peut montrer le code ou tu remet le compteur à 0 et le Enabled du Timer à true ?

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm2::BitBtn2Click(TObject *Sender)
    { if(e >= a&& e<= b)
           Form7->Show();
    else{ Form3->Timer1->Enabled=true;
            compteur=0;      
             Form3->Show();
            Form3->Label2->Caption=vectStringGrid[indexStringGrid]->Cells[0][i];
    
          }
    et j'ai refait l'inialisation de compteur dans la forme2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private:	// Déclarations utilisateur
              int compteur ;

  15. #15
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Il faut que tu remette le conteur à 0 avant de remettre le Enabled à true et affiche plutot la form avant de commencer le clignotement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void __fastcall TForm2::BitBtn2Click(TObject *Sender)
    {
      if(e >= a&& e<= b)
        Form7->Show();
      else
      { 
        Form3->Show();
        Form3->Label2->Caption=vectStringGrid[indexStringGrid]->Cells[0][i];
        compteur=0;      
        Form3->Timer1->Enabled=true;
      }
    }

  16. #16
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    le meme probleme

  17. #17
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    La fenêtre Form3 s'affiche-t-elle bien, si oui, il faudrait ajouter un Application->ProcessMessage() ou un Refresh() dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
        Label1->Visible = !Label1->Visible ;
       //Ajouter ici le code de rafraichissement
        compteur = compteur +1 ;
        if(     compteur > 20 )
        {
            Timer1->Enabled = false ;
            Label1->Visible = true ; // ou false si tu veux qu'au final le label soit caché
        }
    }

  18. #18
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
        Label1->Visible = !Label1->Visible ;
       Refresh() ;
        compteur = compteur +1 ;
        if(     compteur > 20 )
        {
            Timer1->Enabled = false ;
            Label1->Visible = true ; // ou false si tu veux qu'au final le label soit caché
        }
    }
    le meme probleme

  19. #19
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye de mettre un point d'arrêt sur l'évènement OnTimer de ton Timer pour voir si il passe bien dedans quand tu le réinitialise

  20. #20
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Par défaut
    comment ça ?

Discussions similaires

  1. [VBA]comment faire un temps arret de quelques secondes
    Par megapacman dans le forum Général VBA
    Réponses: 3
    Dernier message: 16/05/2008, 11h54
  2. comment avoir label dynamique!
    Par Amokrane dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/05/2008, 21h53
  3. Réponses: 25
    Dernier message: 17/02/2005, 18h02
  4. [Label] Comment faire clignoter un label ?
    Par delphicrous dans le forum Composants VCL
    Réponses: 7
    Dernier message: 09/07/2004, 16h50
  5. Comment mettre un label sur une image
    Par dug dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2004, 10h40

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