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 :

Classe Component: c'est quoi et comment l'utiliser?


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 Classe Component: c'est quoi et comment l'utiliser?
    Bonjour à tous,


    J'utilise Visual 2005 Express; mais je ne suis pas expérimenté du tout.

    Dans le menu Projet, j'ai trouvé l'option ajouter un élément

    Visual C++ ouvre alors une fenêtre qui propose entre autre Classe Component

    Si j'ajoute une "classe Component", je découvre que l'IDE m'ouvre une fenêtre dans laquelle je peux ajouter des composants de la boite à outils (voir ci dessous), mais contrairement à une Winforms ils sont en vrac sans mise en page ....

    Je me pose des questions :

    1- A quoi cela est il destiné ?

    2- J'ai l'impression qu'on peut créer sa propre classe en assemblant des composants, mais je me trompe peut-être ...

    Si c'est le cas où puis je trouver un exemple d'utilisation?


    Merci d'avance à ceux qui me lisent et surtout à ceux qui auront la gentillesse d'éclairer ma lanterne.

    Bonne journée

    Jean-Louis

    PS : voici la séquence de fenêtres de l'IDE :


    1- ouverture d'une class Component




    2 - Fenêtre de l'IDE pour la Class Component




    3 - La fenêtre avec l'ajout de composants de la boite à outils




    4- le code pour ceux qui comprennent :

    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
    #pragma once
     
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Diagnostics;
     
     
    namespace essai {
     
        /// <summary>
        /// Description résumée de ma_classe
        /// </summary>
        public ref class ma_classe :  public System::ComponentModel::Component
        {
        public:
            ma_classe(void)
            {
                InitializeComponent();
                //
                //TODO*: ajoutez ici le code du constructeur
                //
            }
            ma_classe(System::ComponentModel::IContainer ^container)
            {
                /// <summary>
                /// Requis pour la prise en charge du Concepteur de composition de classes Windows.Forms
                /// </summary>
     
                container->Add(this);
                InitializeComponent();
            }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    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 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Un "Component" est un composant logiciel.
    Une brique réutilisable.
    La différence avec un contrôle est que le contrôle gère obligatoirement une zone d'affichage.
    Cas concret :
    Un composant qui permet de choisir visuellement un fichier.
    Vous pouvez avoir un bouton (c’est un contrôle) qui demande, sur un click, à un composant "file_picker" de récupérer un chemin de fichier.

    L'implémentation du composant peut utiliser des contrôles, comme dans le cas d'un "file_picker".

    Les composants ne gérant pas de zone d'affichage propre, ils sont regroupés dans une zone spécifique du designer des forms quand ils sont ajoutés à une WinForm.

    N'ayant pas de zone d'affichage, le designer pour un composant ne permet que d'ajouter et supprimer les sous-composants et contrôles constitutifs du composant.

  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
    Merci beaucoup Bacelar pour cette réponse qui correspond parfaitement à ma question "qu'est ce que c'est?"

    Mais reste ma question "Comment l'utiliser?"

    Auriez vous quelque part un exemple qui expliquerait sur un cas ultra simple comment l'utiliser avec Visual C++/CLI?

    Je précise avec Visual C++/CLI parce que je n'arrive toujours pas à assimiler la syntaxe

    Je patauge avec Visual C++/CLI ... Même pas foutu de créer une classe et de l'utiliser

    Bonne journée et merci ..

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    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 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Je pense que, si vous connaissez le C++, vous vous faites des noeuds au cerveau pour rien.

    Examinons le code que vous avez posté :

    indique que c'est une classe dite managée, de nom "ma_classe". Une classe managée est une classe C++ dont les instances seront instanciable par gcnew à la place de new et que ces instances pourront utiliser les fonctionnalités offertes par le framework .NET, dont un garbage collector qui libérera vos objets automatiquement (à utiliser avec parcimonie ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :  public System::ComponentModel::Component
    La classe dérive de "System::ComponentModel::Component", une classe extrêmement simple qui ne fait que simplifier l'intégration des classes qui en dérive dans les Designers de VisualStudio.

    C'est la méthode que les Designers de VisualStudio vont modifier pour prendre en compte vos actions dans les Designers.

    Quand vous ouvrez le Designer sur une classe composant et que vous lâcher un composant sur la surface, cela ne fait que créer un champ à votre classe, ayant un type correspondant au type du composant lâché sur la surface du Designer avec un nom par défaut, facilement modifiable dans la grille de ces propriétés. C'est la pseudo-propriété "(Name)" (voir image postée) qu'il faut modifier pour changer le nom du champ dans la classe du composant hôte (celui qui est ouvert, pas celui qui est lâché sur le Designer).
    A coté que cette pseudo-propriété, il y a toutes les propriétés (~les champs publics d'une classe) de l'objet sélectionné dans le Designer.
    Quand il n'y a pas d'objet sélectionné dans le Designer, c'est les propriétés de la classe hote qui sont affichées.

    A la question "comment utiliser un composant ?", et bien exactement comme une classe C++/CLI standard, et en plus, on peut mettre cette classe dans la toolbox de VisualStudio et on peut insérer une instance de cette classe dans un autre composant ou dans un formulaire par un simple drag-and-drop.

    De plus, le Designer permet de modifier les propriétés de l'instance via la grille des propriétés affichée sur le coté du Designer.

    Le Designer ne fait que générer du code dans la méthode "InitializeComponent" qui est facilement accessible en ouvrant les fichiers "xxx.Designer.xxx" avec un simple éditeur de texte. Il ajoute aussi des champs via le mécanisme de classe partiel, mais ce n'est qu'un détail.

  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
    Je pense que, si vous connaissez le C++, vous vous faites des noeuds au cerveau pour rien.
    Je ne connais pas très bien le C++, juste un peu
    Et je ne pratique qu'occasionnellement.

    Je me perds beaucoup dans les notations avec les :: , ^ , -> , ....

    Et puis je n'ai toujours pas compris pourquoi on écrit tout dans un fichier .h

    Merci, je lis et relis ce que vous avez écrit, je pense que cela me fera avancer.

    Bonne journée

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    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 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Je ne connais pas très bien le C++, juste un peu
    LE C++/CLI, c'est un peu du (C++)++, il faut avoir de bonnes bases en C++ et avoir des notions .NET (C# par exemple) pour être à l'aise.

    Je me perds beaucoup dans les notations avec les :: , ^ , -> , ....
    Et en plus je vous ai dit des bêtises dans mon précédent message.
    Le Designer C++/CLI ne semble pas utiliser le concept de classe partielle. C'est encore mieux car cela simplifie la compréhension du code généré par le Designer pour une personne non familière des concepts .NET.
    Vous pouvez regarder directement dans le .h les modifications faites par le Designer, elles sont très simples et vous verrez qu'il n'y a rien de magique ou de compliquer à utiliser le Designer. Le fichier .resx utilisé par le Designer n'est qu'une béquille pour lui permettre d'avoir un affichage constant.

    Et puis je n'ai toujours pas compris pourquoi on écrit tout dans un fichier .h
    En .NET, il n'y a pas de séparation entre la déclaration d'un type et son implémentation. Si vous voulez bien différentier l'interface d'utilisation d'une catégorie de classe, .NET fournit directement le concept d'interface.
    Tout mettre dans le .h, c'est n'avoir qu'un fichier, chouette , et comme on fait des déclarations (avec des implémentations, mais c'est pareil avec les templates C++), on mets ça dans des .h.

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

Discussions similaires

  1. signature numérique: c'est quoi et comment?
    Par zidane2 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/08/2010, 01h13
  2. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 15h53
  3. checkstyle plugin class fan-out complexity c'est quoi?
    Par BigBarbare dans le forum NetBeans
    Réponses: 2
    Dernier message: 13/03/2008, 15h56
  4. SPRING:C'est quoi?utilisé quand et comment?
    Par AMFProg dans le forum Spring
    Réponses: 1
    Dernier message: 26/07/2007, 07h53
  5. [Language]Hierarchie de classe unique c'est quoi ?
    Par Le Pharaon dans le forum Langage
    Réponses: 1
    Dernier message: 16/09/2005, 17h58

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