Etienne BAUDOUX

Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Etienne BAUDOUX

Forum sur les projets de Etienne BAUDOUX

-29%
Le deal à ne pas rater :
PC portable Gamer ERAZER DEPUTY P60 – 15,6” FHD 144Hz – i7-12è ...
999.99 € 1399.99 €
Voir le deal

4 participants

    Créez vos propres composants sous forme de DLL!

    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Créez vos propres composants sous forme de DLL!

    Message par Szman Sam 10 Aoû 2013 - 17:26

    Bonjour à tous Smile

    Aujourd'hui petit tutoriel pour créer vos propres composants sous forme de DLL (donc réutilisables sous visual basic, SZ et les autres permettant de programmer en VB^^).

    Voila les catégories du tutoriel:
     -Matériel nécessaire
     -Création du projet 
     -Conception de l'interface de notre composant
     -Codage
     -Importation du composant sur SoftwareZator et Visual Studio
     
    Let's go!


    Matériel nécessaire

    Pour ce tutoriel on va avoir besoin:
    -d'un ordinateur Laughing
    -de Visual Basic 2010 (Express ou non, peu importe)



    Pourquoi pas SoftwareZator?
    Et bien tout simplement parce que c'est impossible, vous le verrez dans la partie Codage Smile


    Création du projet (ne pas sauter (même si cela vous paraît simple, vous risqueriez de vous tromper!))


    Vous allez me dire:

    On est pas bêtes, on sait créer un projet quand même!

    Je vais vous répondre, peut-être mais on ne va pas créer un projet normal (donc pas une Application Windows Forms) mais une bibliothèque de classes! Pourquoi? Et bien pour pouvoir générer un fichier dll pardi!amusé

    Je sens que vous avez besoin d'un screenshot Laughing :


    Créez vos propres composants sous forme de DLL! Tutopa10


    Et voilà le travail Smile 

    Let's go pour la suite!


    Conception de l'interface de notre composant




    Euh.... C'est quoi ce truc bizarre qui s'appelle Class1.vb?

    Ne vous inquiétez pas, ce n'est rien de grave Laughing.


    Je vous autorise (plutôt vous demande Very Happy) de supprimer Class1.vb dans l'explorateur de solutions:


    Créez vos propres composants sous forme de DLL! Tutopa11



    Si vous n'avez pas compris, vous faites clique droit sur Class1.vb dans l'explorateur de solution, et vous cliquez sur Supprimer. Vous pouvez aussi la sélectionner (oui "la", on dit UNE classe Laughing) et appuyer sur la touche Suppr de votre clavier (pas besoin de photo hein Smile)

    Maintenant pour éviter une vagues trop importante de screens, vous appuyez sur les touches: Ctrl, Maj et A en même temps Smile Si ça ne fais rien, allez dans Projet en haut et cliquez sur Ajouter un nouvel élement.
    Puis sélectionnez Contrôle utilisateur (et pas Contrôle utilisateur (WPF)!), donnez lui le nom que vous voulez (en bas de la fenêtre Ajouter un nouvel élement
    ATTENTION: LAISSEZ LE .vb A LA FIN DU NOM DE VOTRE CONTRÔLE!

    Pour ce tuto, on va faire une TextBox dont on va créer une propriété qui permettra de choisir son message de base, je sais c'est pas grand chose mais c'est un tuto, pas la recréation des sims non plus Laughing 
    Donc redimensionnez votre form a peu près comme ceci:


    Créez vos propres composants sous forme de DLL! Tutopa12



    puis ajoutez un TextBox (avec la propriété Multiline activée) dont la taille sera la même que notre contrôle utilisateur. Je suppose que vous vous en doutez, vous devez superposer la TextBox au contrôle utilisateur (logique, sinon pourquoi avoir mis les deux à la même taille Laughing).
    Et voila c'est fini pour la conception d'interface! Rendez-vous dans la prochaine partie de ce tutoriel!

    Codage

    C'est partit pour la partie la plus compliquée de ce tutoriel Smile 
    Ne vous inquiétez pas je vous expliquerai le code au fur et à mesure^^


    Tout d'abord, pressez la touche F7.... Magie! Le code! 
    Ne supprimez rien surtout (je vous préviens car vous êtes capable de tout Very Happy!)
    On va commencer par déclarer une nouvelle variable. Sous le Public Class mettez:
    Code:
    Dim choice As Choix
    Oh non! Première ligne et déjà une erreur!
    Ne paniquez pas, c'est normal Smile C'est tout simplement que Choix n'existe pas, alors créons le Smile
    On va donc créer une énumération. Une énumération est en quelques sortes un regroupement de plusieurs valeurs. Ces valeurs, ce seront les propositions pour notre propriété. Vous ne comprenez pas? Regardez par exemple la propriété RightToLeft, elle possède plusieurs valeurs qui sont: Yes, No et Inherit. Je sais, cette propriété n'a aucun rapport avec notre projet^^ c'était juste un exemple :p
    ATTENTION: ne vous faites pas d'idées, les énumérations ne servent pas qu'a être des valeurs de propriétéamusé


    Bon, et si on la créait cette énumération? Laughing 
    Voici le code pour créer une énumération nommée Choix:

    Code:
    Enum Choix

    End Enum

    Tu te moque de moi là?! Où sont les valeurs de notre propriété??

    Du calme voyons Laughing 

    Les valeurs doivent être entrées entre Enum Choix et End Enum.
    Par exemple:
    Code:
    Enum Choix
      Choix1
      Choix2
      Choix3
    End Enum

    C'est mieux non? Smile
    Je pense que vous l'avez compris maintenant, les valeurs de notre future propriété seront Choix1, Choix2 et Choix3.

    Petite info utile: ne mettez pas d'espace ni de caractères spéciaux dans les noms de valeurs.


    Maintenant on va créer notre propriété! Si vous avez lu (correctement Very Happy) mon premier tutoriel, vous saurez que pour créer une propriété, on utilise le mot clef Property.
    Mais ce n'est pas tout! Bon je suis gentil, je vous réécris le petit bout de code utile Smile :
    Code:
    Public Property TextBaseChoose As Choix
       Get

       End Get
       Set(value As Choix)

       End Set
    End Property

    TextBaseChoose n'est juste que le fruit de mon imagination, vous pouvez mettre n'importe quoi à la place, mais pas d'espace ni de caractères spéciaux!
    Avant de continuer, pour ceux qui ne le savent pas, TextBaseChoose est le nom de notre propriété.

    Dans le Get donc entre Get et End Get, mettez:

    Code:
    Return choice
    puis entre le Set et le End Set mettez:

    Code:
    choice = value
    setchoix()


    Mais.... Mais j'ai un erreur! 
    Je sais ne paniquez pas, c'est normal Smile


    Pourquoi? Et bien parce-que setchoix() n'existe pas^^


    C'est partit créons le!


    Mais juste avant, petite explication du code de la propriété:


    Return choice: je n'ai jamais franchement compris le sens de Get mais je peux vous dire qu'il faut toujours faire Return avec notre variable à utiliser dans la propriété (enfin c'est comme ça que je vois les choses Laughing )


    choice = value: value est une variable créée avec la propriété. Elle obtient la valeur , de la propriété, choisie par le développeur. Par exemple soit Choix1, soit Choix2 ou soit Choix3. Du coup la valeur récupérée par value devient la valeur de choice.


    setchoix(): c'est le nom d'un Sub (pour plus de détails, cliquez-ici).


    C'est bon? Parfait! 
    Nous allons maintenant créer notre fameux setchoix():

    Code:
    Sub setchoix

    End Sub
    Et maintenant plaçons le code de notre Sub. Avant, je vais redire précisément ce que je veux obtenir:
    Je veux que quand la valeur de la propriété TextBaseChoose  est Choix1, et bien ma TextBox ai pour texte "Bonjour".
    Si la valeur est Choix2, alors le texte de la TextBox sera "Hello".
    Et enfin, si la valeur est Choix3, alors le texte de la TextBox sera "Hola" (sans les accents, je sais^^)


    Et bien pour cela, rien de plus simple^^:

    Code:
    Sub setchoix()
      If choice = Choix.Choix1 Then
          TextBox1.Text = "Bonjour"
      ElseIf choice = Choix.Choix2 Then
          TextBox1.Text = "Hello"
      ElseIf choice = Choix.Choix3 Then
          TextBox1.Text = "Hola"
      End If
    End Sub

    Pourquoi avoir mis "Choix.Choix1" et pas directement Choix1? Idem pour les autres...

    Tout simplement parce-que Choix1 appartient à l'énumération Choix. C'est comme si vous disiez Text au lieu de TextBox1.Text... Le logiciel ne peut pas déterminer à qui appartient Choix1. Imaginez vous avez plusieurs énumérations dont les valeurs portent les mêmes noms, comment voulez-vous que le visual studio devine laquelle utiliser? Laughing 

    On a presque fini le code!
    Je vais vous demander de retourner dans l'onglet permettant la conception d'interface, puis de rajouter un timer.
    Puis vous réduisez un peu la TextBox, vous double-cliquez sur le contrôle-utilisateur (et pas la TextBox!) puis vous remettez la TextBox à la même taille que le contrôle utilisateur.
    Vous vous apercevrez qu'un bout de code c'est ajouté. C'est celui qui va faire les actions demandées quand la fenêtre contenant votre contrôle utilisateur va s'ouvrir. Autrement dit, l'événement Load.
    Dedans vous écrirez:

    Code:
    Timer1.Start

    Maintenant retournez dans le concepteur d'interface, puis double-cliquez sur votre timer.

    L'événement Tick va s'ajouter dans le code. Dedans, vous entrerez:

    Code:
    TextBox1.Size = Me.Size


    Ce bout de code indiquera que votre TextBox aura toujours la même taille que le contrôle utilisateur. Si vous voulez, vous pouvez régler la propriété Interval du Timer sur 1. 
    Voilà c'est fini Smile

    Enfin presque Very Happy 
    Appuyez sur la touche F5 puis fermez la fenêtre qui s'ouvre.
    Enregistrez votre projet où vous le souhaitez. C'est bon? Alors on se retrouve dans la prochaine partie Wink



    Importation du composant sur SoftwareZator et Visual Studio

    Là ne vous inquiétez plus ce n'est pas très compliqué Smile
    On va commencer par la partie SoftwareZator, puis on terminera avec Visual Studio.


    SoftwareZator:
    Tout d'abord ouvrez votre projet. Puis dans la boite à outils (à gauche de l'écran) vous avez une petite croix en jaune:


    Créez vos propres composants sous forme de DLL! Tutopa13



    C'est bon vous la voyez là?? Very Happy 
    Bien!amusé Maintenant cliquez dessus puis allez là où vous avez enregistré votre projet. Vous allez dans le dossier de votre projet, puis dans le dossier portant son nom, puis dans bin, et enfin dans Debug, puis vous double-cliquez sur la dll portant le nom de votre contrôle utilisateur. Et.... MAGIE! votre contrôle s'est ajouté dans la boite à outils! Et voilà, vous n'avez plus qu'à le glisser sur votre form. Au passage vous remarquerez dans les propriétés qu'une propriété portant le nom de TextBaseChoose s'est créée dans la catégorie Divers...


    Visual Studio


    C'est un peu le même principe qu'au dessus à la différence qu'au lieu de cliquer sur une croix, vous faites directement glisser votre dll depuis votre dossier jusqu'à la boite à outils.
    Vous voyez, c'était rapide non? Very Happy


    Conclusion:

    Et bien voila, c'est déjà la fin de ce tutoriel. J'espère qu'il vous aura plus Smile N'hésitez pas à partager avec nous vos composants fraîchements créés par vous même Smile
    Sur ce, j'attends avec impatience vos commentaires Smile
    Si vous avez un problème, signalez le Smile


    Merci d'avoir lu!


    Cordialement,
    softewarzatorman
    Blackorion35
    Blackorion35
    Je suis là tous les jours
    Je suis là tous les jours


    Masculin Nombre de messages : 2612
    Age : 33
    Localisation : Rouen
    Emploi/loisirs : Technicien Informatique DEC / Associé Directeur Convergence
    Humeur : C'est quand les prochaines vacs... ?
    Date d'inscription : 19/03/2013

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Blackorion35 Dim 11 Aoû 2013 - 9:49

    Excellent ! Bravo alors là super tutoriel !! Very Happy

    A tester d'urgence What a Face
    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Szman Dim 11 Aoû 2013 - 10:44

    Very Happy Merci Smile 
    Sa pourra être utile pour mantrix^^
    Blackorion35
    Blackorion35
    Je suis là tous les jours
    Je suis là tous les jours


    Masculin Nombre de messages : 2612
    Age : 33
    Localisation : Rouen
    Emploi/loisirs : Technicien Informatique DEC / Associé Directeur Convergence
    Humeur : C'est quand les prochaines vacs... ?
    Date d'inscription : 19/03/2013

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Blackorion35 Dim 11 Aoû 2013 - 22:00

    Heu oui enfin pour Mantrix je sais pas (pas pour l'instant) mais pour dev un projet plus compliqué (genre compta, etc) pour des societes, liés des DLL créer de zéro peut permettre d'améliorer un programme :p
    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Szman Lun 12 Aoû 2013 - 6:56

    Ouai c'est sûr! Et puis même sans créer de propriété, tu peux toujours faire un rassemblement de contrôles à utiliser sur plusieurs projets, au lieu de t'amuser à refaire l'interface et les actions. Mais dans ce cas là, pas besoin de se casser la tête avec Visual Studio, autant faire la dll directement sur SZ Smile
    lereparateurdepc
    lereparateurdepc



    Masculin Nombre de messages : 5621
    Age : 31
    Localisation : Calvados
    Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
    Humeur : toujours cool
    Date d'inscription : 31/01/2010

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par lereparateurdepc Lun 12 Aoû 2013 - 6:57

    re,

    C'est la méthode la plus simple pour réaliser un "PlugIn" SZ MAIS attention, uniquement des contrôles avec une interface graphiques, PAS d'actions !!!!.
    Pour des actions sous SZ, il faut un VRAI PlugIn.

    Les propriétés sont accessibles depuis l'action SZ Obtenir/modifier une propriété.

    SZman, tu indique le répertoire Debug ????? Pourquoi ne pas indiquer de générer puis d'aller voir dans Relase .... CAR le Debug est spécial il contient des infos de débug, donc plus lourd !! Smile.

    INFO: Ayant utilisé VS 2012, les raccourcis clavier (F7 par ex) de VB 2010 ne correspond PAS sous VS 2012 ...

    Cordialement ,
    Le réparateur de PC
    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Szman Lun 12 Aoû 2013 - 7:03

    Oui on peut aller voir dans Debug et Release^^
    Sinon pour les raccourcis j'étais pas au courant donc merci du renseignement^^
    polien
    polien



    Masculin Nombre de messages : 3002
    Age : 27
    Localisation : Bouches du Rhones
    Emploi/loisirs : velo, informatique, électronique, robotique, modélisme feroviaire
    Humeur : Je commence tout mais ne finit rien :P
    Date d'inscription : 19/05/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par polien Sam 24 Aoû 2013 - 20:18

    re,

    super tuto Wink à quand sur le site du zéro? lol
    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Szman Lun 26 Aoû 2013 - 8:45

    Je sais pas trop xD
    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Szman Dim 1 Sep 2013 - 11:03

    Re,

    désolé pour le double post :/

    Petite info sur le Return, je ne savais pas trop à quoi il servait, et bien grâce au tuto sur le C++ sur le SDZ, je viens de comprendre Very Happy
    En fait le Return sert à déterminer la valeur retournée... Ok c'est flou^^ je vais expliquer en détails: notre variable choice est utilisée par le Sub setchoix. Plus de détails? Vous êtes exigeants :DMais non je blague, c'est normal^^ Alors je vais vous expliquer le déroulement du bout de code Property:

    -Dans le Get, la propriété obtient et stock la valeur de notre variable choix, dans la variable value. Avouez qu'il porte bien son (normal^^).
    -Dans le Set, on dit que la valeur de la variable choice est égale à la valeur de la variable value (je viens de me rendre compte que c'est inutile ce qu'on a fait en fait^^)
    Puis on effectue le Sub setchoix Smile

    Et voilà, c'est pas plus compliqué que ça^^

    Cordialement,
    softewarzatorman
    lereparateurdepc
    lereparateurdepc



    Masculin Nombre de messages : 5621
    Age : 31
    Localisation : Calvados
    Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
    Humeur : toujours cool
    Date d'inscription : 31/01/2010

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par lereparateurdepc Dim 1 Sep 2013 - 12:28

    re,

    La "fonction" Return est praincipalement utilisée dans les fonctions (Function).

    Un Sub ne retourne pas de valeur, il réalise des actions.
    Une Function, elle, retourne une valeur (son type est précisé)
    Par ex, une fonction de type Boolean ne peut retourner que 2 valeurs: True OU False.

    Autre exemple, une fonction peut retourner les différentes valeurs d'un Enum :
    avec ton exemple:

    Code:
      Public Enum choix
            choix1
            choix2
            choix3
        End Enum

        Function Test(ByVal Param As String) As choix
            If Param = "tata" Then
                Return choix.choix1
            ElseIf Param = "atat" Then
                Return choix.choix2
            Else
                Return choix.choix3
            End If
        End Function

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            MsgBox(Test(TextBox1.Text).ToString)
        End Sub
    Ainsi, en fonction de la valeur de Param (paramètre de la fonction Test), on affiche une des 3 valeurs de l'Enum.


    Cordialement ,
    Le réparateur de PC
    Szman
    Szman



    Masculin Nombre de messages : 1257
    Age : 24
    Localisation : 76230 Bois-Guillaume
    Emploi/loisirs : Code, musique, sport
    Humeur : Toujours heureux évidemment!
    Date d'inscription : 22/10/2011

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Szman Dim 1 Sep 2013 - 12:48

    Merci pour cette explication Very Happy
    lereparateurdepc
    lereparateurdepc



    Masculin Nombre de messages : 5621
    Age : 31
    Localisation : Calvados
    Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
    Humeur : toujours cool
    Date d'inscription : 31/01/2010

    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par lereparateurdepc Dim 1 Sep 2013 - 19:46

    re,

    Au passage, le VB ou le VB.net voir même le C# n'est pas si compliqué à lire quand on y regarde de près.
    Il faut avoir quelques bases en Anglais pour le comprendre.
    (Attention aux mots Américain comme Sub; Under en Anglais pour Sous)
    Ex: dans le tuto, on parle de Get et Set qui une fois traduis donne
    Récupérer/Prendre et Définir/Assigner.
    -> C'est aussi un moyen de mémoriser les mots clé en Anglais (Do, loop, while, for, ...).

    Cordialement ,
    Le réparateur de PC

    Contenu sponsorisé


    Créez vos propres composants sous forme de DLL! Empty Re: Créez vos propres composants sous forme de DLL!

    Message par Contenu sponsorisé


      La date/heure actuelle est Jeu 28 Mar 2024 - 20:55