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 :

Intercepter le changement de valeur d'une variable


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut Intercepter le changement de valeur d'une variable
    Salut a tous,

    Dans une classe j'ai une veriable et j'aimerais créer un évènement qui se déclenche quand elle change de valeur (ou typiquement un bool qui change d'état).

    J'ai vu un peu qu'il faut utiliser les macros BEGIN_MESSAGE_MAP et END... mais j'ai du mal à comprendre leur fonctionnement, et comment les rattacher à ma variable.

    Est-ce que quelqu'un pourrait m'aider ?

    Merci

  2. #2
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Pourquoi ne transformes-tu pas ta variable en propriété ? Après, dans le SetMaVariable(), tu fais bien ce que tu veux, déclenchement d'un événement par exemple.

  3. #3
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Vous pourriez utiliser un timer. Admettons qu'on ait deux variables, Variable et Mem, on initialise le tout dans la constructeur de la classe, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TTimer* t=new TTimer(Application);
    t->OnTimer=VerifVar;
    t->Interval=1;
    Variable=0;
    Mem=Variable;
    Le OnTimer fait le test comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::VerifVar(TObject *Sender)
    {
    TTimer* t = dynamic_cast<TTimer*>(Sender);
    if(Variable!=Mem)
          {
          t->Interval=0;
          ShowMessage("Variable modifiée");
          Mem=Variable;
          t->Interval=1;
          }
    }
    Si par exemple le clic d'un bouton modifie la variable, le message sera affiché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Variable++;
    }
    Il faut attendre ici un millième de seconde, on ne peut pas être prévenu avant.

    À bientôt
    Gilles

  4. #4
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Bonjour,

    Moi je suis partant pour la solution de 10_GOTO_10. Les propriétés sont très pratiques et le jour où tu veux traiter différement ta variable t'auras qu'à changer les méthodes set et get. C'est vraiment efficace.
    "Don't think you are, know you are..." (Morpheus)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Je suis en accord avec 10_GOTO_10.

    C'est en partie le rôle des propriétés, et de leurs méthodes d'accès.
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut
    OK merci pour vos réponses, j'ai réussi à les adapter à mon problème.

    ++

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

Discussions similaires

  1. Affichage du changement de valeur d'une variable.
    Par Renzokuken dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/08/2009, 16h17
  2. Evenement sur changement d0une valeur d'une variable
    Par Destiny dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2008, 09h28
  3. [SQL] Détection du changement de valeur d'une variable
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2007, 20h22
  4. Réponses: 8
    Dernier message: 29/03/2007, 14h48
  5. [VB.NET]Test sur changement de valeur d'une variable
    Par shinji_rem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/11/2006, 15h53

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