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 :

Evenement d'une variable


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Evenement d'une variable
    Bonjour,

    Est il possible? et si oui comment?

    Comme il existe des évènements sur les menus déroulants, en existe il sur les variable?

    Je m'explique:

    Lorsque l'on utilise des menus déroulants on a la possibilité d'exécuter du code si la valeur du menu déroulant a changé, est il possible d'executer du code lorsqu'une variable X a changer?

    J'ai trouvé une explication dans ce forum (ici) mais je comprend pas tout, pouvez vous me donner une explication plus détaillé voir avec un exemble

    merci

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    j'ai lu le post indiqué par le lien que tu as transmis.
    C'est vrai que c'est pas très clair.

    Alors en ce qui me concerne, j'utiliserais une procédure liée à un composant TTimer.

    Tu cherche dans ta barre des composants, le TTimer et tu en poses un sur ta fiche.
    Ensuite tu fixes avec l'inspecteur d'objet la périodicité d'appel en mettant la propriété 'Interval' à 500 par exemple, pour 500 milli-secondes.
    Ensuite dans l'onglet 'Evènement' de l'inspecteur d'objet, tu double-clic sur la méthode 'OnTimer'. Ceci aura pour effet de te créer une procédure de gestion de l'évènement. Cette procdure sera exécutée tous les 500 ms dans ce cas.

    Après il ne te reste plus qu'à écrire du code dans cette procédure, par exemple une séquence de test de l'état de ta variable.

    Lis bien l'aide sur ce composant. Il faut bien veiller à libérer cette ressource en mettant 'Interval' à '0' lorsque tu ne l'utilise plus. Mais tout y est expliqué...
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut
    Je pense que l'idée de la solution proposée dans le lien était la suivante :utiliser une propriété.

    Cela nécessite évidemment d'avoir une classe. Admettons que ta variable à surveiller s'appelle "Ready" et qu'il s'agisse d'un bool :

    Dans un .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
     
    class A
    {
     public :
     A ();  // constructeur
     ~A(); // destructeur
     
    // on crée la propriété Ready (ta variable à surveiller donc) et on lui
    // associe la fonction GetIsReady pour l'accès en lecture, et SetIsReady pour
    // l'accès en écriture.
     __property bool Ready =  {read = GetIsReady,    write=SetIsReady};
     
     
    private :
    bool _ready;
    bool __fastcall GetIsReady(); // la fonction qui va s'exécuter lors de la lecture
    void __fastcall SetIsReady (bool valeur); // idem ms lors de l'écriture
    };
    Voilà pour le .h

    Maintenant dans le .cpp tu fais comme ça :

    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
     
    // Constructeur
    A :: A () { }
     
    // Destructeur 
    A :: ~A () { }
     
    // Fonction appelée automatiquement lors de la lecture 
    bool __fastcall A :: GetIsReady ()
         {
          ShowMessage ("Ready est en train d'être lue !");
          return _ready;
         }
     
    // Fonction appelée automatiquement lors de l'écriture
    void __fastcall A :: SetIsReady (bool valeur)
         {
          _ready = valeur;
          ShowMessage ("Ready a été modifiée et vaut : " + IntToStr(_ready) );
         }

    Et maintenant, dans ton programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // ...
    A a;
    a.Ready = true;
    a.Ready = false;
     
    bool yo = a.Ready;
    // ...
    Voili voilou, ce n'est pas très difficile quand on a compris
    A toi bien entendu de savoir comment caser ta classe, mais ça ne devrait pas être un gros problème.

    (Il y a peut être des fautes, je n'ai pas retesté le code après l'avoir réécrit en changeant le nom des variables)

  4. #4
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Je ne voudrais pas donner l'impression de squatter cette discussion, mais je te remercie Bru-no pour cette précision.
    Du coup j'ai lu l'aide de CBuilder sur __property. Effectivement c'est une fonctionnalité intéressante. Le seul problème est que c'est du pur produit CBuilder, et donc que c'est pas franchement transposable dans un autre langage.
    M'enfin, j'ai encore appris quelquechose aujourd'hui !
    @ bientôt...

    Salut & @+ sur 3W!

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut
    lol, tu ne squattes pas La discussion est ouverte à tout le monde, et n'engage pas que la personne bloquée et les éventuels solutionneurs... l'intérêt c'est que ça profite au plus grand nombre

    Pour en revenir au problème, effectivement c'est du Borland, donc pas portable, ce qui pourrait être un inconvénient important.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Merci, c'est juste ce qu'il me fallait

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

Discussions similaires

  1. [DEBUTANT] Evenement lorsqu'une variable change de valeur
    Par erigoal dans le forum Windows Forms
    Réponses: 11
    Dernier message: 25/05/2009, 00h03
  2. Réponses: 19
    Dernier message: 05/05/2008, 16h45
  3. Evenement sur changement d0une valeur d'une variable
    Par Destiny dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2008, 09h28
  4. Envoyer une variable sur l'evenement onmove
    Par nabab dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/07/2007, 16h26
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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