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

Visual C++ Discussion :

adresser les objets crées


Sujet :

Visual C++

  1. #1
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut adresser les objets crées
    Bonjour.
    Je continue ma migration. J'en sais un peu plus sur mon environnement, mais je continue a butter sur des problèmes technologiques apparemment simples.
    Je sais que mon projet est un projet .NET, crée par visual studio par le choix initiale de faire un projet à partir de code existant. Les résultats de compilation sont cohérent: tout ce qui vient du précédent framewok de BCB est refusé, comme je m'y attendait le reste passe.
    Je commence maintenant à adresser les objets visuels crées par form.
    J'ai crée une form pour commencer et j'ai crée un contrôle pour essayer d' adresser les éléments de départ. J'ai des difficultés pour adresser les méthodes et les contrôles qui sont dans la form. Je vais donc mettre les éléments clefs de la form et montrer quelques éléments que j'ai adressé avec les messages correspondant du compilateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                    void show( int mode)
    		{
    			ShowWindow( mode);
    		}
    		FormDeDepart(void)
    		{
    			InitializeComponent();
    			menuprincipal();
    			//TODO: ajoutez ici le code du constructeur
    			//
    		}
    ce code compile correctement.
    maintenant je ne sais pas appeler les codes à partir des autres classes. Je vais dans un premier temps parler de l'adressage du menuprincipal qui est un contrôle créer par form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       iCountOfMenuItems = ChargeurdeSpécification::FormDeDepart->menuprincipal; //->Items->Count;
        // Disable all the Main menu items and their sub menu items
        for (iIndex = 0;iIndex < iCountOfMenuItems;iIndex++)
        {
          ChargeurdeSpécification::FormDeDepart::menuprincipal;  //->Items->Items[iIndex]->Enabled = false;
    J'ai dans ce bout de code essayé les deux approche de l'objet
    le premier me dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1>MenuToolbarManager.cpp(54): error C2275: 'ChargeurdeSpécification::FormDeDepart'*: utilisation non conforme de ce type comme expression
    1>MenuToolbarManager.cpp(54): error C2227: la partie gauche de '->menuprincipal' doit pointer vers un type class/struct/union/générique
    et le deuxième me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1>MenuToolbarManager.cpp(58): error C2039: 'menuprincipal' : n'est pas membre de 'ChargeurdeSpécification::FormDeDepart'
    1>          d:\usr\memoria\dev\aln_kernel\make\FormDeDepart.h(18) : voir la déclaration de 'ChargeurdeSpécification::FormDeDepart'
    et j'ai plusieurs exemples avec le même comportement. J'ai notamment essayer une approche différente avec les mêmes diagnostiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     iCountOfMenuItems = ChargeurdeSpécification::FormDeDepart->menuprincipal(); //->Items->Count;
        // Disable all the Main menu items and their sub menu items
        for (iIndex = 0;iIndex < iCountOfMenuItems;iIndex++)
        {
          ChargeurdeSpécification::FormDeDepart::menuprincipal();  //->Items->Items[iIndex]->Enabled = false;
    J'ai besoin d'adresser les primitives et les donnée du menu principal et je ne sais comment faire. Notamment je serais heureux d'adresser les propriétés du menuprincipal comme ci dessous
    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 InitializeComponent(void)
    		{
    			this->SuspendLayout();
    			// 
    			// menuprincipal
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->Name = L"main menue";
    			this->Size = System::Drawing::Size(150, 29);
    			this->Load += gcnew System::EventHandler(this, &menuprincipal::menuprincipal_Load);
    			this->ResumeLayout(false);
    		}
    Je compte sur vous pour m'aider: ce sera .

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 461
    Par défaut
    Je ne suis pas sûr de tout saisir.

    "menuprincipal", c'est quoi ?
    Une fonction libre, une méthode static, une méthode d'instance.

    "ChargeurdeSpécification::FormDeDepart" : cela ressemble plus à un type qu'à une instance d'objet, ce qui explique la complainte du compilateur.

    Je ne connais plus BCB depuis plus de 20 ans, je ne sais plus si cette bibliothèque graphique était très objet (POO), mais il semble que le code que vous montrez ne l'est pas beaucoup.

    Par défaut, dans un projet Winforms, il existe une fonction main qui est le point d'entrée du "programme" .NET.
    Si vous regardez le code, vous verrez que c'est ce bout de code qui instancie le formulaire principal de l'application.

    Les mécanismes de pompe à message et de génération d'évènement sont cachés dans le Framework Winforms.
    Si vous avez l'habitude de la programmation sous Windows, cela peut être très déstabilisant.

    Cela renforce le fait que cette bibliothèque est réellement orientée objet (pas comme les MFC).

    Donc, dans cette logique, c'est le formulaire qui gère son propre menu.

    Je me rends compte que je vous ai peut-être perdu avec des détails.

    Je vais vous donner une marche à suivre pour afficher une application avec un formulaire avec un menu, dans VS2010.
    -Créez un projet de type "Application Windows Forms"
    -Double-Cliquez sur Form1.h dans l'explorateur de solution.
    Cela devrait lancer le Designer de Forms de Vs2010
    -Sélectionnez dans la ToolBox (la faire apparaître si nécessaire) le contrôle "MenuStrip" et "lâchez-le" sur le formulaire dans le Designer.
    -Vous aurez, dans le Designer de formulaire, tous les outils "WISWIG" pour customiser le menu de votre formulaire.

    Maintenant, qu'est-ce qui ne vous conviendrait pas dans le résultat obtenu en suivant le processus précédent ?

  3. #3
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut Des recherches fait pendant que vous repondiez
    Bonjour,
    D'abord, je vous remercie de la réponse que vous m'avez faite.
    Ensuite, je vous dit que je vais regardez ce que vous avez dit
    En attendant je vous parle de la solution que j'ai ébauché et de ce que ça me dit.

    With the install of the .NET Framework 4 and through using Visual Studio 2010, you will find a few controls available that allow you to build ASP.NET applications with server-side AJAX capabilities. This is the framework to take your applications to the next level because you can accomplish so much with it, including adding specific AJAX capabilities to your user and custom server controls. Every AJAX enhancement added to your application will make your application seem more fluid and responsive to the end user.
    You might be wondering where the big AJAX-enabled server controls are for this edition of Visual Studio 2010 if this is indeed a new world for building Web applications. The reason you do not see a new section of AJAX server controls is that Microsoft has treated them as an open source project instead of just blending them into Visual Studio 2010.
    Developers at Microsoft and in the community have been working on a series of AJAX-capable server controls that you can use in your ASP.NET applications. These controls are collectively called the ASP.NET AJAX Control Toolkit. Recently, Microsoft has made the ASP.NET AJAX Control Toolkit a part of the Microsoft AJAX Library found at www.asp.net/ajaxlibrary. Downloading the library, you will find that it now also includes the complete AJAX Control Toolkit. The following figure shows the download page for the AJAX Library.
    J'ai regardé ce que on pouvait avoir dans les livres et j'ai mis le paragraphe de tête de ce que j'ai suivi comme conseil.
    Mais je me rend compte que ce que le livre a dit et le site de Asp m'as dit
    quand je demande à visual de prendre la dll en outil, la ligne Ajax Asp contôle est grisée, et n'est pas active.

    vous m'avez demandé ce que c'était que menu principal : je vous livre ci dessous le code de cet objet
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    namespace ChargeurdeSpécification {
     
    	/// <summary>
    	/// Description résumée de menuprincipal
    	/// </summary>
    	public ref class menuprincipal : public System::Windows::Forms::UserControl
    	{
    	public:
    		menuprincipal(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: ajoutez ici le code du constructeur
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~menuprincipal()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
     
    	private:
    		/// <summary>
    		/// Variable nécessaire au concepteur.
     
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->SuspendLayout();
    			// 
    			// menuprincipal
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->Name = L"main menue";
    			this->Size = System::Drawing::Size(150, 29);
    			this->Load += gcnew System::EventHandler(this, &menuprincipal::menuprincipal_Load);
    			this->ResumeLayout(false);
    		}
    #pragma endregion
    	private: System::Void menuprincipal_Load(System::Object^  sender, System::EventArgs^  e)
    	    {
    		}
    	};
    }
    ensuite je vous dit que je n'ai pas trouvé ce que vous avez évoqué dnas la phrase
    Sélectionnez dans la ToolBox (la faire apparaître si nécessaire) le contrôle "MenuStrip" et "lâchez-le" sur le formulaire dans le Designer.
    Je commence a suspecter que l'installation de mon environnement n'est pas bon.en particulier j'ai des message qui me disent que Le framework .Net 4.0 n'est pas installé et je l'ai réinstaller hier.
    J'ai donc réinstaller la solution Visual Studio après avoir fait un nettoyage approfondi de mon ordinateur, et j'ai repris mon essai;
    Sélectionnez dans la ToolBox (la faire apparaître si nécessaire) le contrôle "MenuStrip" et "lâchez-le" sur le formulaire dans le Designer.
    Je suis arrivé jusqu'au "MenuStrip", mais je n'ai pas encore trouvé comment le copier pour aller le coller sur la form?... Je passe sur le menu outil puis choisir les éléments de la boite à outil et là j'arrive sur MenuStrip dans le Framework .NET, et je n'arrive à rien.
    J'ai réussi a afficher le menu par l'onglet afficher et le choix boite à outil. c'est probablement ce que vous disiez en parlant de faire afficher la boite à outil.
    Quand je suis pas à pas le processus structuré comme votre proposition, que je génère avant d'adresser le MenuStrip, la génération est OK
    si j'ajoute l'instruction suivante, c'est rejeté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form1.toolStripMenuItem1 = "bonjour";
    il me reste a trouver comment adresser le StripMenu ainsi crée, d'autant plus que rien n'est disponible comme description du menu.
    si on essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form1::toolStripMenuItem1 = "bonjour";
    le compilateur répond
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Test3.cpp(17): error C2597: référence non conforme à un membre non static 'Test3::Form1::toolStripMenuItem1'
    En fait il faut une fois le menu dessiné ouvrir le fichier Form1.h avec l'éditeur
    Je vous remercie de vos réponses. je trouve cela

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

Discussions similaires

  1. OneToMany et une boucle qui crée les objets..
    Par Invité dans le forum Hibernate
    Réponses: 6
    Dernier message: 27/12/2011, 13h40
  2. Réponses: 4
    Dernier message: 06/06/2011, 21h05
  3. Xml Serialization ne crée pas les objets que je veux
    Par FadeOut dans le forum C++/CLI
    Réponses: 1
    Dernier message: 17/03/2009, 12h36
  4. Réponses: 0
    Dernier message: 31/01/2008, 11h23
  5. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37

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