OVH Cloud OVH Cloud

Menu_2

2 réponses
Avatar
joel
bonjour, peut on et comment ajouter dans une barre de menu d'autres choix
ex: fichier
-> Ouvrir
-> Quitter
comment inserrez entre les 2 list1, list2 ect...
j'ai oublier de priciser dynamiquement au lancement du prg suivant un
listbox

2 réponses

Avatar
Picalausa François
"joel" a écrit dans le message de news:
43e1d15e$0$18336$
bonjour, peut on et comment ajouter dans une barre de menu d'autres choix
j'ai oublier de priciser dynamiquement



Hello,

Il te faudra créer un élément de base pour gérer ta liste dynamique. Celui
ci prend souvent la forme d'un élément désactivé ayant pour Caption
quelquechose comme "(Aucun)" ayant un index 0.
Ensuite, tu peux charger et décharger les élements grâce à Load/Unload.

Pour cet exemple, nous aurons un élément de base nommé mnuDynList d'index 0:
Private Sub Form_Load()
AppendMenuItem "a", "ACTION_A"
AppendMenuItem "b", "ACTION_B"
AppendMenuItem "c", "ACTION_C"
AppendMenuItem "d", "ACTION_D"
AppendMenuItem "e", "ACTION_E"

RemoveMenuItem "ACTION_C"
RemoveMenuItem2 1

'restent b d e


End Sub

Private Sub AppendMenuItem(Caption As String, Identifier As String)
Dim NewIndex As Long
NewIndex = mnuDynList.UBound + 1

'Crée le nouvel élément
Load mnuDynList(NewIndex)

'Définit ses propriétés
mnuDynList(NewIndex).Caption = Caption
mnuDynList(NewIndex).Visible = True
mnuDynList(NewIndex).Enabled = True
mnuDynList(NewIndex).Tag = Identifier

'Masque l'élément de base
mnuDynList(0).Visible = False
End Sub

Private Sub RemoveMenuItem(Identifier As String)
Dim i As Long

For i = 1 To mnuDynList.UBound
If mnuDynList(i).Tag = Identifier Then
Exit For
End If
Next i

'Supprime l'élément
RemoveMenuItem2 i
End Sub

Private Sub RemoveMenuItem2(Index As Long)
Dim i As Long

If Index > 0 And Index <= mnuDynList.UBound Then
'L'élément de base redevient visible si
'on supprime le dernier élément dynamique
mnuDynList(0).Visible = mnuDynList.Count = 2

'Supprime l'élément dynamique
Unload mnuDynList(Index)
End If
End Sub

Private Sub mnuDynList_Click(Index As Integer)
MsgBox "L'élément " & mnuDynList(Index).Tag & " a été sélectionné"
End Sub

<note générale> pour compléter son post, il est inutile de créer un nouveau
thread. S'autorépondre est une solution nettement plus valable, AMHA</note
générale>

--
Picalausa François
Avatar
joel.decotigny
merci pour ta reponse, sa fonctionne supper...

"Picalausa François" a écrit dans le message de news:
eZOcYd$
"joel" a écrit dans le message de news:
43e1d15e$0$18336$
bonjour, peut on et comment ajouter dans une barre de menu d'autres choix
j'ai oublier de priciser dynamiquement



Hello,

Il te faudra créer un élément de base pour gérer ta liste dynamique. Celui
ci prend souvent la forme d'un élément désactivé ayant pour Caption
quelquechose comme "(Aucun)" ayant un index 0.
Ensuite, tu peux charger et décharger les élements grâce à Load/Unload.

Pour cet exemple, nous aurons un élément de base nommé mnuDynList d'index
0:
Private Sub Form_Load()
AppendMenuItem "a", "ACTION_A"
AppendMenuItem "b", "ACTION_B"
AppendMenuItem "c", "ACTION_C"
AppendMenuItem "d", "ACTION_D"
AppendMenuItem "e", "ACTION_E"

RemoveMenuItem "ACTION_C"
RemoveMenuItem2 1

'restent b d e


End Sub

Private Sub AppendMenuItem(Caption As String, Identifier As String)
Dim NewIndex As Long
NewIndex = mnuDynList.UBound + 1

'Crée le nouvel élément
Load mnuDynList(NewIndex)

'Définit ses propriétés
mnuDynList(NewIndex).Caption = Caption
mnuDynList(NewIndex).Visible = True
mnuDynList(NewIndex).Enabled = True
mnuDynList(NewIndex).Tag = Identifier

'Masque l'élément de base
mnuDynList(0).Visible = False
End Sub

Private Sub RemoveMenuItem(Identifier As String)
Dim i As Long

For i = 1 To mnuDynList.UBound
If mnuDynList(i).Tag = Identifier Then
Exit For
End If
Next i

'Supprime l'élément
RemoveMenuItem2 i
End Sub

Private Sub RemoveMenuItem2(Index As Long)
Dim i As Long

If Index > 0 And Index <= mnuDynList.UBound Then
'L'élément de base redevient visible si
'on supprime le dernier élément dynamique
mnuDynList(0).Visible = mnuDynList.Count = 2

'Supprime l'élément dynamique
Unload mnuDynList(Index)
End If
End Sub

Private Sub mnuDynList_Click(Index As Integer)
MsgBox "L'élément " & mnuDynList(Index).Tag & " a été sélectionné"
End Sub

<note générale> pour compléter son post, il est inutile de créer un
nouveau thread. S'autorépondre est une solution nettement plus valable,
AMHA</note générale>

--
Picalausa François