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

Comment dupliquer un container?


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut Comment dupliquer un container?
    Bonjour,

    Je fais une interface graphique avec un container dans lequel se trouvent des boutons, des curseurs, une image, des menus déroulants ...

    Je voudrais avoir 4 containers identiques disposés côte à côte ...

    Comment faire?

    L'idéal serait de créer un objet correspondant au container et de faire 4 instances de l'objet ...

    Mais comment fait on cela en C++/CLI ?

    Si quelqu'un peut me donner un tuyau, ce serait sympa.

    Je rajoute un exemple :

    Voila le genre de fenêtre que j'ai:



    Je voudrais faire ça :



    Je peux copier-coller 4 fois, mais ce n'est pas très propre de programmer 4 fois la même chose.

    Il doit bien y avoir un moyen de créer un objet correspondant au groupe et de faire 4 instances de l'objet.

    Je ne trouve aucun exemple, pourtant cela doit être courant.

    Bonne journée
    Jean-Louis

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il semble que tu utilises la technologie winforms pour faire ton IHM. Il existe le moyen d'ajouter à ton projet un "custom control" qui te permettra de faire ce que tu souhaite.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Il semble que tu utilises la technologie winforms pour faire ton IHM. Il existe le moyen d'ajouter à ton projet un "custom control" qui te permettra de faire ce que tu souhaite.

    Merci JolyLoic,

    Oui, tout à fait j'utilise les winforms, c'est bien pratique pour un ignorant comme moi.

    Tu dis bien que ça existe mais où trouver comment créer un "custom control" et l'ajouter à la boite à outils?



    J'utilise la version gratuite Visual Express ... Peut-être ne permet elle pas de le faire.

    Bonne journée et merci.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Il suffit d'ajouter un objet de type "controle" à votre projet, exactement comme vous ajoutez une nouvelle classe à votre projet.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Il suffit d'ajouter un objet de type "controle" à votre projet, exactement comme vous ajoutez une nouvelle classe à votre projet.
    Merci, apparemment Visual C++/CLI 2008 Express ne le propose pas



    Bonne journée

    Jean-Louis

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Peut-être une limitation de VS2005 Express.
    Avez-vous vérifié avec la version VS2010 Express ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Peut-être une limitation de VS2005 Express.
    Avez-vous vérifié avec la version VS2010 Express ?
    Je viens de l'installer et c'est la même chose :




    Par contre j'ai trouvé une version complète de Visual 2008 utilisable 90 jours et là c'est autre chose :



    Bonne journée.

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par jlg_47 Voir le message
    Je viens de l'installer et c'est la même chose :

    En effet, en C++, les winforms sont plutôt limités...

    Est-ce que tu as le choix de technos ? Si je demande, c'est parce que winforms, c'est une technologie .NET, et non pas C++, et même si le C++/CLI permet de les utiliser, je ne trouve pas ça hyper pratique. Il est souvent plus intéressant :
    - Soit de faire du pur .NET, en utilisant par exemple C#, et avec les winforms (en perte de vitesse) ou wpf (plus puissant, mais un peu plus long a maîtriser)
    - Soit de faire du pur C++, en utilisant une bibliothèque C++, comme Qt.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Merci JolyLoic,

    Et oui, j'ai le choix ... Je fais ça pour le fun

    J'ai pris C++/CLI parce que ça s'appelle C++

    Le C# , je ne sais pas ce que c'est ...

    Mais je vais peut-être y passer parce qu'avec Visual on trouve beaucoup d'exemples en C#

    Bonne journée

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Bonjour à tous,

    Je reviens sur ce sujet parce que je suis trop nullos pour trouver tout seul

    J'ai créé une Winforms standard avec Visual C++ Express ...
    l'IDE m'ouvre Form1.h

    Ensuite je fais "ajouter au projet" et j'ajoute un "Contrôle Utilisateur" puisque la version de Visual que j'utilise maintenant me le propose.

    voici la fenêtre :




    Et maintenant l'IDE m'ouvre une fenêtre dans laquelle je peux placer des outils de la boite à outils ... Cela me paraît bien parti



    Je rajoute donc mes petits contrôles ultra simples (c'est un test!), juste une GroupBox, une TextBox et 2 boutons ... jusque là tout va bien



    Je compile et Visual me dit :

    ========== Régénération globale*: 1 a réussi, 0 a échoué, 0 a été ignoré ==========
    Jusque là tout va bien

    Ouf ! j'ai trouvé comment le rajouter à la boite à outils ...

    On fait "Outils", puis s "Options", puis "Concepteur Windows Forms" et "General" et on a une belle fenêtre sur laquelle on met "true" pour l'option "AutoTollboxPopulate",



    Puis on ferme Visual et on ouvre à nouveau ... Et on a son contrôle utilisateur dans la Toolbox ...

    Dans mon contrôle, j'ai rajouté le bout de code suivant pour les boutons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private:  System::Void mon_control::mon_Bouton_Click(System::Object ^sender, System::EventArgs ^e)
        {
    		int i;        
    		Button^ b = safe_cast<Button^>(sender);
    		i = b->TabIndex;
    		if (i < 16) Ouvrir_vanne (i);
    		else Fermer_vanne (i);
         }
    Le concepteur de forme ne bronche pas et de ce côté tout se passe bien.

    Mais quand je compile, le compilateur me dit :

    'Ouvrir_vanne'*: identificateur introuvable
    'Fermer_vanne'*: identificateur introuvable
    Ces deux fonctions sont définies dans Form1.h

    C'est sûrement tout bête ... cela fait des heures que je galère et je ne vois pas ...

    Bonne journée

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Là, c'est plus un problème de POO (Programmation Orienté Objet) que de C++/CLI.

    Si "Ouvrir_vanne" et "Fermer_vanne" sont dans le fichier "Form1.h", c'est que c'est des méthodes de Form1 et non du contrôle.

    Pour que le contrôle soit réutilisable, il ne doit pas dépendre des WinForms qui l'inclus.
    Le plus simple est que votre contrôle déclare un évènement "ChangementEtatVanne" sur lequel votre formulaire s'abonnera.
    Lorsque les actions de l'utilisateur devront générer ce changement d'état, le contrôle génèrera cet évènement.

    http://msdn.microsoft.com/en-us/libr...2s(VS.80).aspx

    Le code du delegate de votre WinForm, abonné à cet évènement, sera libre d'appeler "Ouvrir_vanne" et "Fermer_vanne", car il fera partie de votre Winform.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Points : 103
    Points
    103
    Par défaut
    Bonjour Bacelar,

    On discute du même sujet sur deux fils différents

    Vu que j'ai résolu la question "Comment créer un Contrôle Utilisateur", j'ai mis "Résolu" et j'ai ouvert l'autre fil "Comment appeler une fonction à partir du Contrôle Utilisateur"

    VOIR ICI

    Je ne comprends pas bien le mécanisme du delegate et de l'event ...
    Enfin disons que je comprends le mécanisme, mais je bloque sur l'implémentation.

    Comme je dis sur l'autre fil, j'essaie de faire un truc tout c..

    Un Contrôle Utilisateur avec un seul bouton qui doit écrire "Bonjour" dans une Textbox de la Form.

    Et je n'y arrive pas

    Bonne journée
    Jean-Louis

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Encore désolé pour cet énorme retard,

    J'ai posté sur le fil suivant http://www.developpez.net/forums/d99...r/#post5593562 (Post #20)

    une solution VS2010 qui utilisedes User Control.

    Un Contrôle Utilisateur avec un seul bouton qui doit écrire "Bonjour" dans une Textbox de la Form.
    Ce n'est pas comme cela qu'il faut résonner, mais :
    un Contrôle Utilisateur notifie à qui veut bien l'écouter qu'un évènement particulier s'est produit.
    Dans notre cas, c'est une action/décision de l'utilisateur qui ce fait par l'utilisation d'un clic sur un bouton, mais tout autre procédé d'interaction, comme des raccourcis claviers ou des commandes vocales feront l'affaire.
    La Form s'est abonné à l'évènement particulier du contrôle et fait les modifications dans SES contrôles (ceux de la Form) qui correspond à l'évènement associé à l'action/décision de l'utilisateur.

    Ce n'est pas le Contrôle Utilisateur qui écrit "Bonjour" dans une Textbox de la Form, mais la Form qui décide de réagir à un évènement particulier en écrivant "Bonjour" dans l'une de SES Textbox.

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

Discussions similaires

  1. Comment dupliquer table Oracle vers SQLserver ?
    Par ag007 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 08/09/2006, 17h26
  2. [MySQL] Comment dupliquer des pages dynamique
    Par Cel'ic dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/06/2006, 14h52
  3. Comment dupliquer un enregistrement
    Par steeves5 dans le forum Access
    Réponses: 1
    Dernier message: 16/05/2006, 18h52
  4. Comment dupliquer un enregistrement via le code ?
    Par massol joel dans le forum Access
    Réponses: 2
    Dernier message: 11/11/2005, 19h01
  5. comment utiliser le CONTAINS ???
    Par zarbiman dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/10/2005, 18h33

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