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 :

Probleme de différents événements sur un seul bouttons


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Probleme de différents événements sur un seul bouttons
    Bjr, je m'explique,
    Je dois afficher dans un label, les nombres allant de 0 a short_max (ce que j'arrive à faire) mais je dispose d'un boutton : Start / Pause / Resume qui doit me permettre d'arréter et de reprendre l'affiche du compteur, j'arrive à afficher correctement et a pouvoir selectionner les bouttons, mais le compteur ne s'arrete pas d'incrémenter.

    Voila mon code :
    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
     
    if (click==true)
    {
    Quit->Enabled=false; // put the button quick to off
     
    while(nb<SHRT_MAX)
    {
    init=nb;
    number->Caption = nb;
    number->Refresh();
    nb++;
    Application->ProcessMessages(); //interrupt the execution of an application
    click=false;
    }
    }
    else
    {
    number->Caption = init;
    Quit->Enabled=true; // put the button quick to on
    click=true; // next time we push the button action, it will resume
    }
    Pense aux balises de code ce sera plus lisible pour tout le monde

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je te propose un code, je ne sais pas si il te conviendra :

    Voici le .h
    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
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TButton *Start;
            TLabel *Label1;
            TButton *Pause;
            TButton *Resume;
            TButton *Stop;
            void __fastcall StartClick(TObject *Sender);
            void __fastcall FormCreate(TObject *Sender);
            void __fastcall PauseClick(TObject *Sender);
            void __fastcall ResumeClick(TObject *Sender);
            void __fastcall StopClick(TObject *Sender);
    private:	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
     
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    const NbMax = 50000;
    int Nb;
    bool Continue;
    //---------------------------------------------------------------------------
    #endif
    Voici le .cpp
    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
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      Nb=0;
      Label1->Caption = IntToStr(Nb);
      Pause->Enabled = False;
      Resume->Enabled = False;
      Stop->Enabled = False;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::StartClick(TObject *Sender)
    {
      Continue = True;
     
      Start->Enabled = False;
      Pause->Enabled = True;
      Resume->Enabled = False;
      Stop->Enabled = True;
      while ((Nb<NbMax) && (Continue))
      {
        Nb++;
        Label1->Caption = IntToStr(Nb);
        Application->ProcessMessages();
      }
      if (Nb>=NbMax)
      {
        Start->Enabled = True;
        Pause->Enabled = False;
        Resume->Enabled = False;
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::PauseClick(TObject *Sender)
    {
      Continue = False;
      Pause->Enabled = False;
      Resume->Enabled = True;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ResumeClick(TObject *Sender)
    {
      Start->Click();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::StopClick(TObject *Sender)
    {
      Nb=0;
      Continue = False;
      Start->Enabled = True;
      Pause->Enabled = False;
      Resume->Enabled = False;
      Stop->Enabled = False;
      Label1->Caption = IntToStr(Nb);
    }
    //---------------------------------------------------------------------------
    J'espère que ça t'aidera, j'ai fait ça vite fait.
    A+

    PS: Lorsque tu mets du code, utilises le # du menu (dans la barre d'outils). Merci

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Désolé pour la balise code, j'avais zappé !
    Merci de ta réponse ero-sennin mais en faite, je me suis surement mal expliqué, mais je n'ai qu'un seul bouton ayant pr caption : Start / Pause / Resume.

    Donc je dois gérer la pause et le reprise du compteur dans ma boucle while. C'est pourquoi j'ai esssayer avec des booléans mais sans résultats.

    Merci quand meme, je continue encore et encore !

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bon bah cà y est, j'ai trouver
    Je vous met quand meme le code
    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
     
            if (Quit->Enabled==true)
            {
                  click=true;
                  Quit->Enabled=false;     // put the button quick to off
     
                  while(nb<SHRT_MAX && click)
                  {
                    nb++;
                    number->Caption = nb;
                    // allow the erasing of the last number & print the new one
                    number->Refresh();
                    Application->ProcessMessages(); //interrupt the execution of an application
                  }
            }
            else
            {
                    Quit->Enabled=true;   // put the button quick to on
                    click=false;         //  allow to stop the counter
                    number->Caption = nb;
     
            }
    VOila

Discussions similaires

  1. [XL-2010] Création différents graphiques sur une seule colonne
    Par nico-maggot dans le forum Excel
    Réponses: 1
    Dernier message: 26/11/2013, 20h21
  2. gestion de 2 evenements sur un seul boutton
    Par o-live dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/01/2007, 16h05
  3. plusieurs COUNT sur une seule table avec conditions différentes
    Par dingoth dans le forum Administration
    Réponses: 9
    Dernier message: 20/12/2006, 10h13
  4. [c#] Probleme d'événement sur TreeView
    Par gilles641 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2006, 16h56
  5. Probleme "onmouseout" sur IE seule
    Par softflowe dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 06/10/2004, 14h04

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