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 :

Passage d'un paramètre d'une fenêtre à une autre ?


Sujet :

C++Builder

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 62
    Points : 30
    Points
    30
    Par défaut Passage d'un paramètre d'une fenêtre à une autre ?
    Bonjour tout le monde

    Je viens vous demander de l'aide car je bug sur un point helas ...

    Voila dans mon aplication, j'ai un simple bouton qui m'ouvre une autre fenetre qui elle contien un tableau
    A ce stade je n'ai aucun problème

    Par contre j'ai besoin de passer un paramètre sur la seconde fenêtre et que celui ci soit stoquer dans une variable......

    Comment faire ? existe t il une solution ou une hethode particuliere...

    ---------------------------------------------------------------

    Voila un bout de code

    FENETRE 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall TFormLecteur::ButtonGrimoireClick(TObject *Sender)
    {
            if(strcmp(NomJoueur, "") == 0)
            {
                    Application->MessageBoxA("Votre fiche de Personnage Joueur n'est pas ouverte. Vous ne pouvez pas accéder à vôtre grimoire !", "Attention !", MB_OK);
            }
            else
            {
                    AnsiString Titre = "Grimoire Pj >> ";
                    Titre += NomJoueur;
                    FormGrimoire->Caption = Titre;
                    FormGrimoire->Show();
            }
    }
    FENETRE 2

    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
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"     //Lecteur de fiche
    #include "Unit3.h"     //Boite grimoire
    #include "Fonction.h"  //Permet la conversion AnsiString en Char
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TFormGrimoire *FormGrimoire;
    //---------------------------------------------------------------------------
    __fastcall TFormGrimoire::TFormGrimoire(TComponent* Owner)
            : TForm(Owner)
    {
    }
    -----------------------------------------------------------
    Si quelqu'un voie ce que je veux faire ou qui conais une solution simple ....

    Apres je me debrouille avec la variable 8)

    D'avance Merci

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Bonjour,

    Ceci ne t'aiderait-il pas pour commencer ?
    http://c.developpez.com/faq/bcb/?pag...bresautrefiche

    Cordialement,

    Arnaud

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 62
    Points : 30
    Points
    30
    Par défaut
    J'ai essayer ca fonctionne mais pour le titre pas pour une variable independante de la Fenetre 2 !

  4. #4
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Citation Envoyé par almisuifre
    J'ai essayer ca fonctionne mais pour le titre pas pour une variable independante de la Fenetre 2 !
    Tu veux dire que cette variable n'est pas membre de ta Form2 ?

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 62
    Points : 30
    Points
    30
    Par défaut
    Si mais voila
    j'ai un char Fichier[200]; sur ma form 1

    donc faut que je la passe en parametre sur la Form 2 ! donc avec un truc du style

    Form2->Show(Fichier); helas ca marche pas sinon deja ca aurais été une partie de ma solution....

    Donc je me suis dit la solution c'est de passer par un label style
    Form2->Label1->Caption = Fichier;

    Oui ca marche mais voila faut pas que je face apparaitre ce qui est contenue dans fichier puis c'est pas tres propre comme solution ....

    Donc je me suis dit il doit y avoir une methode ou un soltion simple qui doit marché pour faire que char Fichier[200]; ....... passage de paramètre .... char VariableLocal[200]; et que les données reste identique de l'une des fenetre à l'autre ... d'ou ma question....

    Bref ce n'est pas grave je v passer par un ini et puis le tour sera jouer !

    D'avance merci

  6. #6
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Citation Envoyé par almisuifre
    Si mais voila
    j'ai un char Fichier[200]; sur ma form 1

    donc faut que je la passe en parametre sur la Form 2 ! donc avec un truc du style

    Form2->Show(Fichier); helas ca marche pas sinon deja ca aurais été une partie de ma solution....
    Cela pourrait marcher si tu surchargeais la méthode Show dans Form2
    Citation Envoyé par almisuifre
    Donc je me suis dit la solution c'est de passer par un label style
    Form2->Label1->Caption = Fichier;

    Oui ca marche mais voila faut pas que je face apparaitre ce qui est contenue dans fichier puis c'est pas tres propre comme solution ....

    Donc je me suis dit il doit y avoir une methode ou un soltion simple qui doit marché pour faire que char Fichier[200]; ....... passage de paramètre .... char VariableLocal[200]; et que les données reste identique de l'une des fenetre à l'autre ... d'ou ma question....
    D'avance merci
    Tu peux passer VariableLocal[200] en membre public de Form2, ou mieux la rendre privée, et créer un méthode qui la positionnera.

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 62
    Points : 30
    Points
    30
    Par défaut
    Oui effectivement je suis bien daccord mais comment faire cela ?

  8. #8
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Dans le .h de Form2, dans la partie public, tu mets la déclaration de VariableLocal.
    Ensuite, tu pourra y accéder directement par Form2->VariableLocal.

    C'est la solution simple et pas très propre, car il me semble que tu manques quelque peu de connaissances en POO...

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 62
    Points : 30
    Points
    30
    Par défaut
    Wais ... effectivement je debute donc je manque encore de subtilité sur mon code ..... certe mais justement si je pose cettequestion c'est que elle me sera utile non seulement maintenant mais aussi plus tard ...

    Bref je v voir ce que je peux arriver a faire mais je pense que faut que trouve une solution dépannable donc ...... si il existe une autre methode

  10. #10
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 21
    Points : 50
    Points
    50
    Par défaut
    Une autre solution serait de passer un pointeur sur votre buffer dans le constructeur de Form2:

    dans Form1 (.cpp):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    char* Buffer1 = new char[nbr];
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
        TForm2 * tf2 = new  TForm2(this, Buffer1);
        tf2->ShowModal();
        delete tf2;
    }
    //---------------------------------------------------------------------------
    dans Form2 (.h) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public:		// Déclarations de l'utilisateur
        __fastcall TForm2(TComponent* Owner, char* c);// modif : ajout paramètre
    dans Form2 (.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
     
    char* Buffer2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner, char* c)
        : TForm(Owner)
    {
        Buffer2 = c;
    }
    //---------------------------------------------------------------------------
     
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
        char MyChar = Buffer2[1];// faites ce que vous voulez...
    }
    //---------------------------------------------------------------------------
    Ce n'est qu'un petit exemple, mais qui fonctionne parfaitement avec BCB3 ; j'espère que cela vous aidera.

    Tabz

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    Citation Envoyé par TABZ
    Une autre solution serait de passer un pointeur sur votre buffer dans le constructeur de Form2
    C'est effectivement la meilleure solution.

    Mais en C++ inutile d'utiliser les char alors qu'il existe les std::string, et comme tu es sous Borland, les AnsiString qui ont l'avantage d'être utilisables avec la VCL.

    Ne pas oublier également de passer cette valeur par une référence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //--------------------------------------------------------------------------- 
    void __fastcall TForm1::Button2Click(TObject *Sender) 
    { 
    AnsiString buffer = "je m'appelle toto";
     
    TForm2 * tf2 = new  TForm2(this, buffer); 
    tf2->ShowModal(); 
    delete tf2; 
    }
    dans Form2 (.h) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private:
        AnsiString buffer;
    public:      // Déclarations de l'utilisateur 
        __fastcall TForm2(TComponent* Owner,  const AnsiString & b);// modif : ajout paramètre

    dans Form2 (.cpp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //--------------------------------------------------------------------------- 
    __fastcall TForm2::TForm2(TComponent* Owner, const AnsiString & b) 
        : TForm(Owner), buffer(b) 
    { 
    }

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

Discussions similaires

  1. [Toutes versions] Passage d'une fenêtre à une autre
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/04/2010, 12h06
  2. Passage d'un paramètre avec quote pour une procédure dynamique
    Par dcarroz dans le forum Développement
    Réponses: 7
    Dernier message: 26/01/2010, 11h06
  3. Réponses: 3
    Dernier message: 19/07/2008, 00h10
  4. Réponses: 4
    Dernier message: 01/01/2007, 10h26
  5. [C#] Passage de valeur d'une fenêtre à une autre
    Par groum999 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/09/2004, 14h12

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