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++ Discussion :

Variables entre deux fenêtres windows form


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Variables entre deux fenêtres windows form
    Tous est dans l'intitulé je présume, je n'arrive pas à utiliser des variables entre deux fenêtres, dans une première on modifie les valeurs, l'autre n'a aucun lien avec la précédente mais j'aimerais pouvoir récupérer ces valeurs.

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Sans plus de précision, nous devrons malgré tout être particulièrement génériques dans nos réponses

    En gros, cela se fait en quatre temps:
    1. s'assurer que la variable est publiquement accessible d'une manière ou d'une autre au départ du formulaire dans lequel elle se trouve
    2. inclure le fichier d'en-tête de ce formulaire dans le fichier d'implémentation du formulaire qui doit récupérer la variable
    3. s'assurer que le formulaire qui doit récupérer la variable dispose de (d'un pointeur vers) l'instance du formulaire dans lequel elle se trouve
    4. passer par (le pointeur vers) l'instance du formulaire dans lequel se trouve la variable pour la récupérer dans la fonction qui en a besoin
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Merci de prendre la peine de me répondre, j'ai essayé avec tes consignes 3 et 4 mais cela ne fonctionne toujours pas.

    Voici plus d'explications:

    Dans un formulaire qui s'appelle 'configurer' je déclare en global les variables suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public: int valeur_debite_com;
    		int valeur_parite_com ;
    		int valeur_stop_com;
    		int valeur_donnees_com;
    		int valeur_flux_com;
    Ces variables reçoivent des valeurs au cours de l'exécution de ce form.
    Je cache le form. je lance un nouveau form
    dans celui-ci j'inclus "configurer.h"

    Je déclare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    configurer config  // instance de type config
    et quand je fais dans le form actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    config.valeur_parite_com
    le débogueur m'indique que cela vaut 0.

    J'ai essayé avec des pointeurs mais le problème persiste.
    Une idée?

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    C'est parce que tu dois veiller à ce que l'instance de ton formulaire "configurer" au départ de laquelle tu essaye de récupérer les différentes valeurs soit la même ce celle... que tu utilise pour introduire ces valeurs.

    Cela pourrait prendre la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void MyForm::configurer()
    {
        configurer conf;
        conf.showModal();
        int debit_recup = conf.valeur_debite_com;
        int parite_recum = conf.valeur_parite_com;
        /*...*/
    }
    Une autre solution serait de faire en sorte que le formulaire "configurer" soit un membre du formulaire qui doit récupérer les valeurs:
    class MyForm
    {
    public:
    MyForm():conf(){}
    void configurer()
    {
    conf.showModal();
    int debit_recup = conf.valeur_debite_com;
    int parite_recum = conf.valeur_parite_com;
    }
    private:
    configurer conf;
    };
    voir, si les deux formulaires doivent pouvoir agir de manière plus ou moins indépendante, en utilisant des pointeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MyForm
    {
        public:
            MyForm(configurer * c):conf(c){}
            void configurer()
            {
                conf->showModal();
                int debit_recup = conf->valeur_debite_com;
                int parite_recum = conf->valeur_parite_com;
            }
        private:
            configurer * conf;
    };
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Merci pour ces précisions encore une fois mais je ne dispose pas de la méthode showModal() sur mon visual..

    Voici comment j'ai procédé en suivant votre exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	private : void suivre::configurer()
    	{
    		configurer conf;
    		conf.showModal();
    		int debit_recup = conf.valeur_debite_com;
    		int parite_recum = conf.valeur_parite_com;
    		/*...*/
    	}
    la première erreur étant la suivante:
    errorC2146 erreur de syntaxe: abscence de ';' avant l'identificateur 'conf'

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par miklmikl Voir le message
    Merci pour ces précisions encore une fois mais je ne dispose pas de la méthode showModal() sur mon visual..

    Voici comment j'ai procédé en suivant votre exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	private : void suivre::configurer()
    	{
    		configurer conf;
    		conf.showModal();
    		int debit_recup = conf.valeur_debite_com;
    		int parite_recum = conf.valeur_parite_com;
    		/*...*/
    	}
    J'ai utilisé la fonction showModal, mais ca peut être n'importe quelle fonction ayant pour but de... faire afficher le formulaire
    la première erreur étant la suivante:
    errorC2146 erreur de syntaxe: abscence de ';' avant l'identificateur 'conf'
    Cela n'a rien à voir avec l'absence de la fonction showModal (pour autant que ton formulaire de configuration hérite de la classe de base ad-hoc), mais, simplement, cela a à voir avec le fait que tu n'as sans doute pas inclus configure.h(pp) dans le fichier *.cpp dans lequel tu implémente les fonctions de ton formulaire "principal"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    j'ai bien inclus "configurer.h", mais si je montre le formulaire, celui-ci apparaitra donc et ce n'est pas voulu. Non?

    voici mon inclusion:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // fichier suivre.h
    //[...]
    #include "configurer.h"
     
    //[...]
    	private : void suivre::configurer()
    	{
    		configurer conf;
    		conf.show();
    		int debit_recup = conf.valeur_debite_com;
    		int parite_recum = conf.valeur_parite_com;
    		/*...*/
    	}

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Déjà, la fonction configurer de ton formulaire suivre devrait être publique, autrement, elle ne sera... pas accessible (ou alors, tu dois avoir un bouton dont l'événement onClick (ou similaire) appelle la fonction )

    Ensuite, si ce que tu souhaite faire c'est, effectivement, récupérer les valeurs que le formulaire de configuration permet de modifier, il faut bien que... ce formulaire soit présenté à l'utilisateur pour lui permettre d'indiquer les nouvelles valeurs, non

    Autrement, quel serait l'avantage de placer des valeurs dans un formulaire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    En fait je t'explique,

    Lors du lancement de mon IHM, on arrive sur une première page, sur celle ci, deux boutons: configurer et suivre.

    Quand on clique sur configurer une nouvelle fenêtre apparait et dans celle-ci on sélectionne les valeurs voulues. Une fois que c'est fait la fenêtre se ferme et on revient sur la fenêtre de départ.

    On clique maintenant sur suivre et dans cette nouvelle fenêtre j'aimerais récupérer les valeurs de configurer. Tu comprends donc que je ne veux pas que la fenêtre configurer s'ouvre au moment ou j'ai besoin de ces valeurs.

    J'espère avoir été claire...

Discussions similaires

  1. Échange de variables entre deux fenêtres
    Par dasycarpum dans le forum Débuter
    Réponses: 12
    Dernier message: 14/06/2013, 17h04
  2. Accéder à une variable entre deux fenêtres
    Par Kermichou dans le forum Débuter
    Réponses: 6
    Dernier message: 13/09/2011, 14h36
  3. Partage de variable entre deux forms
    Par PtitGénie dans le forum C++Builder
    Réponses: 6
    Dernier message: 27/12/2007, 22h32
  4. Partage de variable entre deux forms
    Par PtitGénie dans le forum C++
    Réponses: 2
    Dernier message: 16/12/2007, 18h56
  5. Passer une variable entre deux fenêtres
    Par DeezerD dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/08/2005, 09h52

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