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 :

Création manuelle de form


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut Création manuelle de form
    Bonjour,

    voilà j'ai du rater un chapitre du C++ je ne comprend pour pourquoi quand je crée avec l'éditeur de form, une fenetre avec un picturebox j'ai ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    System::Windows::Forms::PictureBox *  curve;
     
    void InitializeComponent(void)
    {
    ...
    this->curve = (new System::Windows::Forms::PictureBox());
    ...
     
    this->curve->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;
    this->curve->Location = System::Drawing::Point(30, 50);
    this->curve->Name = S"curve";
    ...
    }
    Et lorsque je veux crée ca moi même (créé ma form avec une picturebox lors de l'appui sur un bouton d'une autre form) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    System::Void Form1::bt_histogramme_Click(System::Object*  sender, System::EventArgs*  e)
    {
    
    System::Windows::Forms::Form * principal = new System::Windows::Forms::Form();
    System::Windows::Forms::PictureBox *  courbe = new System::Windows::Forms::PictureBox();
    principal->courbe = (new System::Windows::Forms::PictureBox());
    
    principal->Show();
    }
    j'ai l'erreur suivante sur la ligne rouge:

    error C2039: 'courbe'*: n'est pas membre de 'System::Windows::Forms::Form'

    Si je crée juste la form et fait le Show, aucun problème...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Apparement, c'est du .NET, mais en ce qui concerne la partie C++, il est normale que ça ne marche pas.
    Est ce que c'est du code généré ou du code que tu modifies à la main?

    La classe membre ne possède pas de membre courbe, donc il te renvoit une erreur.

    Par contre la class Form possède un membre curve qui est de type PictureBox. Tu veux créer la form avec une PictureBox, donc pour moi, il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    System::Windows::Forms::Form * principal = new System::Windows::Forms::Form(); // création du form
    System::Windows::Forms::PictureBox *  courbe = new System::Windows::Forms::PictureBox(); // création de la Picture Box
    principal->curve = courbe; // Passage la pictureBox au form
    ou bien (même chose en plus court)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System::Windows::Forms::Form * principal = new System::Windows::Forms::Form(); // création du form
    principal->curve = new System::Windows::Forms::PictureBox() // création et Passage de la pictureBox au form en une ligne

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    salut,

    en fait j'ai créé un formulaire avec l'éditeur pour qu'il me génère le code (comme ca j'ai plus qu'à le réutiliser directement) pour ensuite créer une form à la main.

    je ne vois pas pourquoi ton code irai mieux que le mien (je vois pas de différence).

    La premier code que j'ai mis est celui généré (je m'en servirai pas). Moi je me sert que du mien.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    T'as essayé de compiler mon code? normallement tu n'as plus l'erreur (je ne peux pas testé chez moi, je n'ai pas l'environnement .NET d'installé). Il est possible que je me trompe à cause d'une subtilité .NET que je ne maitrise pas.
    Si mon code ne marche pas, tu devrais avoir une erreur et si c'est le cas poste la.

    La grande différence est:
    Là où tu écris
    principal->courbe
    moi j'écris
    principal->curve


    Le code généré rajoute la déclaration de System::Windows::Forms:: PictureBox * curve;
    Le code généré est il à l'intérieur d'une classe? le this me le fait penser.

    Cette déclaration existe t'elle dans le code manuel? Le problème vient peut être tout simplement de là.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Maintenant j'ai cette erreur,

    error C2039: 'curve'*: n'est pas membre de 'System::Windows::Forms::Form'

    de toute facon, curve n'est déclaré nulle part dans ton code ?!

    oui le code généré est dans une classe, la différence est que moi au lieu d'appeler curve la picturebox, je l'ai appelé courbe dans mon "code manuel"

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Ok, c'est bien ce que je pensais, dans la deuxième partie de mon dernier message: Il n'y a aucune déclaration de curve ou de courbe. Tu as le même problème dans ton code avec courbe qui n'est déclaré nulle part. Au départ j'avais cru que la class Form possèdait un membre curve comme c'est le cas dans le code généré.

    Dans le code généré, il y a la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System::Windows::Forms::PictureBox *  curve;
    A mon avis, le code généré crée une classe qui dérive de Form en y ajoutant un pointeur de PictureBox de nom de curve. C'est pour ça que le code généré peut instancier la pictureBox en faisant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this->curve = (new System::Windows::Forms::PictureBox());
    Toi tu essayes d'utiliser une instance de Form (que tu appelles principal), le problème est que cette classe ne possède de membre PictureBox.

    Je n'ai pas de solution à te donner, je peux juste t'expliquer pourquoi en C++, ça ne peut pas marcher.

    Peut être devrait tu poster dans la partie DotNet du forum

    Bon courage et désolé de n'avoir pu t'aider

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    C'est bon, j'ai créé une classe qui hérite de Form pour faire ca

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

Discussions similaires

  1. Detecter création d'une forme
    Par JustMe dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/02/2006, 23h18
  2. Réponses: 1
    Dernier message: 09/02/2006, 10h11
  3. [C++] débutant création d'une form
    Par TERRIBLE dans le forum C++
    Réponses: 7
    Dernier message: 10/10/2005, 12h23
  4. [MFC] Création manuelle de contrôle bouton
    Par yanisliadon dans le forum MFC
    Réponses: 9
    Dernier message: 21/07/2005, 22h30
  5. [D7] Création dynamique de Form
    Par jer64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2003, 12h20

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