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 Studio Discussion :

Un petit menu fun sous VB NET


Sujet :

Visual Studio

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Un petit menu fun sous VB NET
    Bonjour à toutes et tous,

    Je m'excuse par avance si cela a déjà été fait quelque part mais je vous présente...

    Un petit programme sans prétention développé sous VS2010 et qui permet de créer un menu un peu plus fun que l'austère menu déroulant
    En appliquant cette procédure à chacun des boutons, vous pouvez ainsi créer des sous-menus... etc...

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Public Class F_Menu
    
         'Créez une Form nommée F_Menu comprenant un contrôle ToolTip appelé ToolTip1 et recopiez-y tout ce qui suit
        'Créez un répertoire [monRepertoire] (c'est un exemple, vous pouvez mettre le nom que vous voulez)
        'dans lequel vous mettrez les images des boutons du menu
    
        Private Sub F_Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            'Dim repimages As String = [monRepertoire] '(chemin complet) 'supprimez le commentaire (' en début de ligne) pour la rendre opérationnelle
            Dim maxBouton = 10
            Dim LBouton As Integer = 60 'largeur d'un bouton
            Dim HBouton As Integer = 60 'hauteur d'un bouton
            Dim sepBouton As Integer = 1 'largeur de séparation entre deux boutons
            Dim LB, HB, topB As Integer
    
            'Remplacez les "inconnu.jpg" nécessaires par vos images
            'Remplacez les "tip" par vos propres aides si souhaité
    
            'P.S : Ce menu est prévu pour 10 boutons. Il est possible d'aller au-delà de 10 boutons en rajoutant le même nombre de valeurs dans les 3 tableaux et
            'en modifiant la valeur de maxBouton ci-dessus sans oublier de rajouter les cas correspondants dans la procéure "clicBouton" (voir plus bas)
    
            Dim imageBouton() As String = {"inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", "inconnu.jpg", _
                                           "inconnu.jpg", "inconnu.jpg"}
            Dim tipBouton() As String = {"tip0", "tip1", "tip2", "tip3", "tip4", "tip5", "tip6", "tip7", "tip8", "tip9"}
            Dim visibiliteBouton() As Boolean = {True, True, True, True, True, True, True, True, True, True} 'True affiche le bouton, False ne l'affiche pas
            'P.S : si vous mettez des valeurs à False dans le tableau ci-dessus, quelque soit leur emplacement, il n'y aura pas de trous dans le menu affiché.
            'Les boutons restent collés les uns aux autres quelle que soit la configuration
    
            Dim idx(maxBouton) As Integer
            Dim nbBouton As Integer = 0
    
            'Détermine le nombre de boutons qui seront affichés
            For i As Integer = 0 To maxBouton - 1
                If visibiliteBouton(i) Then
                    nbBouton += 1
                    idx(nbBouton - 1) = i
                End If
            Next
    
            'Prépare la Form. Tous les paramètres ci-dessous sont modifiables à l'envie
            'P.S : les dimensions de la Form s'adaptent au nombre de boutons affichés automatiquement
            With Me
                .AutoScaleMode = AutoScaleMode.None
                .FormBorderStyle = FormBorderStyle.FixedToolWindow
                .Size = New Size(6 + (nbBouton + 1) * sepBouton + nbBouton * LBouton, HBouton + 31)
                .Location = New Point(10, 10)
                .BackColor = Color.Black
                .ForeColor = Color.PeachPuff
                .Font = New Font("microsoft sans serif", 10, FontStyle.Regular)
                .Text = "MENU"
                .ControlBox = True
            End With
    
            'Ajoute les boutons à la Form. NE RIEN MODIFIER dans la boucle ci-dessous
            For i As Integer = 0 To nbBouton - 1
                Dim noBouton As Integer = idx(i)
                Dim btn As New Button
                btn.Name = "Button" & noBouton.ToString
                If i <> nbBouton - 2 Then LB = LBouton : HB = HBouton : topB = 1 Else LB = LBouton : HB = HBouton / 2 : topB = HB
                btn.Size = New Size(LB, HB)
                btn.Location = New Point((i + 1) * sepBouton + (i * LB), topB)
                btn.BackgroundImage = Image.FromFile(repImages & "\" & imageBouton(noBouton))
                btn.BackgroundImageLayout = ImageLayout.Stretch
                Me.ToolTip1.SetToolTip(btn, tipBouton(noBouton))
                AddHandler CType(btn, Button).Click, AddressOf Me.clicBouton
                Me.Controls.Add(btn)
            Next
    
        End Sub
    
        Sub clicBouton(ByVal sender As System.Object, ByVal e As System.EventArgs)
    
            'Lance la procédure en fonction du bouton cliqué
            'IMPORTANT!!! NE PAS OUBLIER de prévoir un cas pour la sortie du programme
            Select Case sender.name.substring(6)
                Case 0
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 1
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 2
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 3
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 4
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 5
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 6
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 7
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 8
                    'lancer ici la procédure correspondante si le bouton est opérationnel
                Case 9
                    'lancer ici la procédure correspondante si le bouton est opérationnel
            End Select
    
        End Sub
    
    End Class

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca ne respecte en rien la programmation orientée objet préconisée en vb.net ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Comme le dit Pol63 c'est pas du tout POO friendly, et donc non utilisable. Cependant la démarche est louable.
    Pour que tu comprennes le problème c'est que la tout est en dur dans le Load d'une form (de démonstration) donc comment je fais moi pour utiliser ton menu ? je copie-colle ton bout de code ? Un grand principe quand on code c'est de ne jamais faire de copier-coller ... car c'est le meilleur chemin vers du code spaghetti ! si tu veux modifier un truc, corriger un bug, ajouter une fonctionnalité alors il faudra copier-coller les modifs partout ... mais es-tu certain de te rappeler tous les endroits ou tu as copier-coller ton code ??? le réponse ne peut qu'être non

    Maintenant donne toi comme défit de créer ton propre menu, POO friendly et donc partageable... tu as l'idée, le but a atteindre et on pourra t'aider.

    le tuto de Morpheus en C# mais qui te donnera le début de chemin

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  4. #4
    Futur Membre du Club
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Déjà merci à vous deux de vous être intéressés au sujet et d'avoir répondu.

    Je me doutais un peu de ces remarques. Je code depuis pas mal de temps mais j'ai toujours codé en VB6 et j'ai beaucoup de mal à "décrocher" et changer d'optique.

    Je sais que le copier/coller est l'ennemi et je sais aussi que pour utiliser mon bout de code il faut en passer par là (je le mentionne moi-même dans les commentaires : créez, copiez,...)

    Le problème est que j'ai beaucoup de mal à faire autrement, à penser autrement.

    Je vais lire le "tuto de Morpheus" pour voir si çà m'éclaire un peu

    Merci encore

    Je ne clos pas le sujet car je sens que je vais avoir besoin de vos lumières

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Citation Envoyé par phantomas13 Voir le message
    Le problème est que j'ai beaucoup de mal à faire autrement, à penser autrement.
    Si j'en crois ton étiquette tu es retraité et donc tu fais ca sans doute sans obligation professionnelle. Partant de ce principe je ne crois pas que tu devrais te forcer à "penser autrement", puisque l'intérêt de la POO c'est de faciliter le découpage / maintenance / réutilisabilité, concèpte extrêmement utile pour les équipes, mais ca n'a rien d'obligatoire pour faire des programmes qui répondent à tes besoins.
    Ca me fait penser à un membre de ce forum Vétéa, qui lui a matérialisé son incompréhension de la POO par tout une série de jeux vidéo rétro, à base de techno elle aussi rétro .
    https://www.developpez.net/forums/d1...mostrad-perdu/
    Et franchement, c'est beau à voir.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Cà c'est vrai! J'ai fait pas mal de petits programmes qui ME sont bien utiles et qui tournent à la perfection.
    Je ne cherche pas à les diffuser mais je suis un perfectionniste et je sais qu'on peut mieux faire que ce que j'ai fait. Même pour ma seule satisfaction personnelle.
    Je cherche donc à faire plus beau et plus rapide... et plus moderne
    Et comme j'ai le temps...
    Je sais très bien qu'on peut aller de A à B avec n'importe quel véhicule mais c'est quand même mieux d'y aller en Ferrari non ?

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Citation Envoyé par phantomas13 Voir le message
    Je sais très bien qu'on peut aller de A à B avec n'importe quel véhicule mais c'est quand même mieux d'y aller en Ferrari non ?
    Ca dépend de la beauté de la route

  8. #8
    Futur Membre du Club
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    C'est vrai
    Pour en revenir à ce qui me préoccupe, qu'utiliseriez-vous, vous, comme "outils" pour réaliser ce menu de manière à ce qu'il devienne "portable" et dans l'air du temps ?
    Attention!!! Je veux juste une aide, des pistes, pas une solution complète que je n'aurais plus qu'à copier/coller

Discussions similaires

  1. Menu sous asp.NET MVC 1.0
    Par beaudelaire dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 20/05/2011, 15h52
  2. comment créer un slide menu sous vb.net
    Par jery.hamed dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/10/2010, 21h20
  3. Menu sous Asp.Net MVC 2.0
    Par chaab_kar dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 24/08/2010, 16h25
  4. [LG]Menu déroulant sous Pascal
    Par Apprenti Sorcier dans le forum Langage
    Réponses: 8
    Dernier message: 26/03/2004, 13h29
  5. Menu dynamique sous Flash MX
    Par dens63 dans le forum Flash
    Réponses: 7
    Dernier message: 29/10/2003, 15h46

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