Menu Dynamique

Nicolo - 3 oct. 2014 à 12:45
 Nicolo - 4 oct. 2014 à 14:18
Bonjour,

Destinée au Lexique, La classe générique MENU permet de générer un menu a partir d'une liste.

Friend LangueIndex As String = "English,Français,Bosanski,Arabe,Indien,Russe,Greck,Israelien"


Un MenuStrip, Un Label, et quelques lignes suffisent pour l'utiliser.

Public Class Form1
    Friend WithEvents LangMenu As New Menu("Langue", LangueIndex)

    Sub Selected() Handles LangMenu.IndexChanged
        Label1.Text = LangMenu.IndexSelected
    End Sub

    Sub New()
        InitializeComponent()
        MenuStrip1.Items.Add(LangMenu.MainMenuItem)
    End Sub
End Class


Est-ce ceci postable ?

Je remercie tous les Admins pour leur participation.

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 220
3 oct. 2014 à 13:40
Bonjour,
traduction, s'il te plait, de "postable" ?
Car c'est là ta question (et aucune autre).
0
Bonjour ucFoutu,

Avant de poster, je voudrait savoir si tout est conforme.
parce que je suis repartit a zéro pour le lexique.
Je voudrait ajouter les options (Polices, dictionnaire, ...),
dans des fiches sous-jacentes.
En attendant, et parce que ca risque d'être long,
je me disais que considérant les nombreuses questions sans réponses
au sujet de l'allocation dynamique des items de menu,
que ca pouvait être traite a part.
D'un autre cote, on répète si souvent de pas sonner du code tout fait que c'est pas pédagogique ou quelque chose comme ca
donc j'hésite.
Faire un tuto ?
Quand tu verra le code ci-dessous, ... Bon courage.

Public Class Menu
    Friend IndexSelected As Short
    Friend MainMenuItem As ToolStripMenuItem
    Event IndexChanged()

    Private Sub LoadString(ByVal ItemList As String)
        Dim LTab() As String = ItemList.Split(",")
        For i As Short = 0 To LTab.Length - 1
            ManageMenu.MenuItemList.Add(LTab(i))
        Next
    End Sub
    Private WithEvents ManageMenu As Menu_Event_Manager
    Public IndexSelectedTemp As Short
    Public Sub MenuClicked(ByVal ItemSelected As String) Handles ManageMenu.MenuClicked
        For IndexSelectedTemp As Short = 0 To ManageMenu.MenuItemList.Count - 1
            If ItemSelected = ManageMenu.MenuItemList.Item(IndexSelectedTemp) Then
                IndexSelected = IndexSelectedTemp
                RaiseEvent IndexChanged()
                Exit For
            End If
        Next
    End Sub

    Class Menu_Event_Manager
        Event MenuClicked(ByVal Index As String)
        Friend Sub ItemClick(ByVal Sender As Object, ByVal e As System.EventArgs)
            RaiseEvent MenuClicked(Sender.Text)
        End Sub
        Friend MenuItemList As List(Of String)
        Friend ItemHandler As EventHandler = AddressOf ItemClick
        Friend Sub SetMenu(ByVal Titre As String, ByVal MenuTitre As ToolStripMenuItem)
            For i = 0 To MenuItemList.Count - 1
                Dim S As String = MenuItemList.Item(i)
                MenuTitre.DropDownItems.Add(S, Nothing, ItemHandler)
            Next
        End Sub
        Sub New()
           MenuItemList = New List(Of String)
        End Sub
    End Class

    Sub New(ByVal Titre As String, ByVal StringItemList As String)
        ManageMenu = New Menu_Event_Manager
        MainMenuItem = New ToolStripMenuItem(Titre)
        ManageMenu.MenuItemList = New List(Of String)
        LoadString(StringItemList)
        ManageMenu.SetMenu(Titre, MainMenuItem)
    End Sub
End Class




Ps je rentre plus comme Co Dubai. Dois-je renouveler mon inscription ?
0
J'en profite pour envisager le tuto.

Allocation dynamique des items du menu.
Programmation par évènements.

La procédure
Add
de la liste des items Offre l'opportunité d'enregistrer une poignée (
Handle
) d'évènement.

 Friend ItemHandler As EventHandler = AddressOf ItemClick
  MenuTitre.DropDownItems.Add(S, Nothing, ItemHandler) 
  Event MenuClicked(ByVal Index As String)


Et ca suffit amplement.

Pour généraliser,
En passant par un String, par exemple,
On aura avantage,
a encapsuler dans des structures.
Tant pour améliorer la lisibilité
éviter les redondances,
et réduire les transitions de paramètres.

Vous remarquerez que le source s'alourdit pour ne réserver la mémoire qu'en cas de besoin.

Menu_Event_Manager
distribue les poignées,
Menu
ajoute les éléments d'interface.

C'est tout simple.

C'est pas beau ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 220
Modifié par ucfoutu le 3/10/2014 à 18:50
Bonjour,
je ne viens ici que pour me préoccuper de :
Ps je rentre plus comme Co Dubai. Dois-je renouveler mon inscription ?
- ce n'est pas Co Dubai, mais CoDubai
- quel est le souci exact que tu rencontres pour te connecter sous CoDubai ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Bonjour ucfoutu,

Merci de m'accompagner depuis le début. Vous n'êtes pas nombreux a vous dévouer pour les débutants du Basic.

Je n'ai aucune idée de la procédure pour revenir comme CoDubai.
J'ai navigue autrefois. Tout d'abord j'étais "Le Pivert". Je suis revenu "Londonic" quand j'habitais Londres, et maintenant je suis a Dubaï.

D'habitude, le site me reconnait sans procédures après la première inscription. (La page d'accueil manque de personnalisation, mais on est heureusement pas la pour faire commerce. On aurait failli depuis longtemps).

Le site ne me reconnais plus. Ceci n'empêche pas de communiquer, mais si je commence a multiplier les pseudos, je risque de faire de même avec les sujets et d'en finir aucun.

Peut-être aurais-je une chance au moment de changer le Lexique pour la version suivante. (Je me rappelle encore du mot de passe)

En attendant, j'ai compris comment on s'inscrit (A part enregistrer les codes extraordinaires qui font notre fierté, je vois pas l'intérêt)

Si je change pas de pseudo, on va me dire que c'est déjà pris. N'est-ce pas ?

PS. Ca reste entre nous pour "Londonic", parce qu'on va m'envoyer corriger ma présentation.
La culture, c'est ce qui reste quand on a tout oublié.

Merci d'avance, ucfoutu, a bientôt.
0
jordane45 Messages postés 37280 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 mars 2023 341
3 oct. 2014 à 22:57
Bonjour
Tu as vu que tu as un menu pour te connecter en haut à droite de l'écran ??
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
3 oct. 2014 à 23:21
Merci Jordane45,

Que pense-tu de ce très beau code si bien appliqué ?
Tu appréciera sans doute le résultat de tes conseils.

ucfoutu,
J'ai essayé d'expliquer "Postable". Qu'est-ce qui va pas ?
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
3 oct. 2014 à 23:29
DropDownItems.Add(S, Nothing, ItemHandler) 


C'est quoi le nothing au milieu ?

Merci d'avance.
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
3 oct. 2014 à 23:42
Poster ne consiste-t-il pas a déposer un code ?
J'espère que j'utilise pas le mot de travers,
Il y a suffisamment de "CREATEURS".
Bonjour.
0
jordane45 Messages postés 37280 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 mars 2023 341
Modifié par jordane45 le 4/10/2014 à 04:11
Bonsoir nico,

Que pense-tu de ce très beau code si bien appliqué ?
Pas grand chose désolé....
1 - Il manque des commentaires dans ton code... histoire d'expliquer à quoi correspondent les différentes SUB et les variables qui constituent ta class
2 - Je n'ai pas vraiment compris la description que tu as fais de cette class.... En gros.. ça sert à alimenter un Menu à partir d'une string et ça affecte les évènements à chaque item ?

Et puis... essaye d'être clair dans ce que tu écris... un texte comme celui là :
Pour généraliser,
En passant par un String, par exemple,
On aura avantage,
a encapsuler dans des structures.
Tant pour améliorer la lisibilité
éviter les redondances,
et réduire les transitions de paramètres.
Et bien... même si les mots sont français... que ..pris par petit bout les phrases sembles correctes grammaticalement... mais le tout ensemble ne veut plus rien dire (ou alors c'est moi qui ne comprend pas ?) ...

</block>
Tu appréciera sans doute le résultat de tes conseils.
</block>
Je ne vois rien dans ton code qui fasse référence à mes conseils..(hormis le constructeur [la sub New ] éventuellement)
Je ne vois pas les "geter" ni les "seter" ( pour les "PROPERTY" )
-> comme propriétés dans ta class tu pourrais avoir par exemple :
(au minimum..Le titre du menu et la liste des items..)


Poster ne consiste-t-il pas a déposer un code ?
J'espère que j'utilise pas le mot de travers,
"POSTER" peut signifie plusieurs choses.... tu peux poster une question (chose que tu as fais en ouvrant cette discussion)
, poster une réponse (c'est ce que je fais en ce moment)... plus généralement on peut dire :Poster un message (cf les deux cas précédents)
Mais on peut aussi parler de "poster une source" ..;c'est à dire déposer dans la rubrique codes-sources ton programme (enfin.. le code source de ton programme)....

En attendant, j'ai compris comment on s'inscrit (A part enregistrer les codes extraordinaires qui font notre fierté, je vois pas l'intérêt)
Et bien ça permet principalement aux autres membres de pouvoir suivre tes différents sujets/questions/source
et même pour toi.. ça permet également de mieux suivre tes questions...(tu peux les retrouver dans ton profil)


PS. Ca reste entre nous pour "Londonic", parce qu'on va m'envoyer corriger ma présentation.
La culture, c'est ce qui reste quand on a tout oublié.
Heu... ben.. tu viens de poster ce message sur un forum publique.....


Et pour en revenir à ta question initiale dans cette discussion...
Est-ce ceci postable ?
Pour qu'une source soit considérée comme "postable".. il faut qu'elle respecte les consignes de la charte du site...
telle que :
Vérifier avant de poster ma source si une source équivalente n'est pas déjà présente et si ma source apporte réellement quelque chose.

Ou encore :
Ne postez pas une source ne faisant qu'utiliser une ou deux fonctions standard du langage.
=> ce qui veut dire en gros... 6 lignes de codes ne constituent pas une "source"

Et aussi (très important) :
Expliquez comment utiliser la source et joignez-y les ressources éventuelles.
Expliquez ce que fait la source.
=> A défaut de fournir un guide d'utilisateur (User-Guid), le développeur/lecteur doit pouvoir prendre facilement votre application en main sans regarder chaque ligne de code.

Toutes les règles sont disponibles ici :
http://codes-sources.commentcamarche.net/contents/11-charte-de-commentcamarche-net-conseils-d-ecriture#regles-pour-poster-une-nouvelle-source-ou-autre-contribution


Et pour en revenir à ton code...
je ne comprend pas l'intérêt d'utiliser des class imbriquées si c'est pour y mettre du "FRIEND" partout....


Et au fait... plutôt que de multiplier les Pseudos....
on pourrait demander aux admininstrateurs du site de fusionner tes comptes..
Si j'ai bien compris.. celui la aussi c'est toi :
http://codes-sources.commentcamarche.net/forum/s/q/cs_Le+Pivert






Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
CoDubai Messages postés 81 Date d'inscription vendredi 19 septembre 2014 Statut Membre Dernière intervention 15 octobre 2014
4 oct. 2014 à 05:28
Le Pivert c'était les premières années du site. Si ce nom a pu en inspirer d'autres c'est pas ma faute. Apres, j'ai trouve des emplois plus lucratifs que la programmation. J'étais pas assez motivé pour partir en Amérique.

Les class sont imbriquées.
Apres de nombreux essais, j'ai décidé que les évènements ont un champ d'action limite. Beaucoup de difficultés parce que j'avais mis la classe générique dans un module. J'ai enfin compris pourquoi l'EDI propose des Class pas seulement des modules.

Est-ce ceci postable ?
Une ligne de code en guise de ressource, trois lignes pour l'utiliser, le titre est explicite. Faut-il un roman pour ce petit code ?
La fonction principale n'est pas si standard.
La dernière question du forum sur le sujet, bien que ancienne, est sans réponse.
Donc c'est déposable.

le résultat de tes conseils.
Regarde la différence avec mes premiers articles avant correction.
Aurais-je fait des progrès si rapides par infusion ?

Londonic
J'ai tout perdu. J'en suis réduit a changer de coordonnées pour échapper a la trigonométrie. Ca va de pi en pi. Je pourrais pas revenir sur mes vieux codes.

Minimum de propriétés
Le titre sera remplace par une fonction du lexique qui le retourne,
et la liste est redondante car générée a partir d'une ressource.

ça sert à alimenter un Menu à partir d'une string
C'est un luxe.
En fait, ça sert à alimenter un Menu à partir d'une liste. J'ai l'intention d'ajouter une gestion de fichier et j'ai choisi le flux.
Un string de strings balisés par des virgules sert d'ébauche, et la fonction
LoadString
sera remplacée si on décide de regrouper des données de nature différente dans un fichier unique. Probablement pas car la ventilation sera automatisée adaptée et standardisée.
Les
Friends
peuvent aider plus tard.
Je suis content que ca fonctionne et que ce soit lisible, C'est un bon début.

Merci encore,

et aussi pour les définitions


PS et le
nothing
des polices ???
Une arithmétique sans zéro ? Comment ca marche ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7885 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 28 mars 2023 137
4 oct. 2014 à 07:55
Bonjour,

Je réponds à cette affirmation qui est totalement fausse:

J'ai navigue autrefois. Tout d'abord j'étais "Le Pivert". Je suis revenu "Londonic" quand j'habitais Londres, et maintenant je suis a Dubaï.


Tous les codes déposés sous le pseudo "Le Pivert" sont de moi. Je ne comprends les élucubrations de ce membre.

Jordan45, suite à nos messages en MP, je confirme ce site s'en va en décrépitude.
0
Whismeril Messages postés 18302 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2023 622
4 oct. 2014 à 08:10
Bonjour nous avons un lepivert, sans espace ni majuscule, inscrit en 2012 soit bien après toi.
Cette quasi homonymie peut expliquer pourquoi tu as hérité d'un cs lors de la fusion. Je ne suis pas en mesure de savoir si cet autre pivert s'est inscrit sur CS ou sur CCM, ni s'il s'agit du premier pseudo de CoDubai.
Par contre la chronologie ne colle pas avec Londonic inscrit en 2009.
0
Whismeril Messages postés 18302 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2023 622
4 oct. 2014 à 08:15
J'ai aussi trouvé un pivert inscrit en 2001
0
cs_Le Pivert Messages postés 7885 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 28 mars 2023 137
4 oct. 2014 à 08:29
J'ai découvert lepivert lors de la fusion avec CCM, qui lui était inscrit sur CCM. Je pense que nous avons affaire à un petit plaisantin. Il suffit de lire sa litanie de messages. IL est quand même facile de vérifier les pseudos avec l'adresse messagerie de chaque membre. La mienne n'a pas changé depuis 2007, ma date d'inscription.

Je n'accepte pas que l'on mette en doute les codes que j'ai postés et que l'on se les attribuent.

@+ Le Pivert
0
Whismeril Messages postés 18302 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mars 2023 622
4 oct. 2014 à 10:57
Ne t'inquiètes pas il n'y a pas de confusion possible entre tes contributions et celles d'un autre.

En ce qui concerne l'adresse mail liée au compte, seuls les webmaster peuvent y avoir accès.
0
Et moi j'ai un pivert dans mon jardin ;-)
0
Rejoignez-nous