Menu en popup avec images sans passer par le créateur de menus de vb [module de classe]

Soyez le premier à donner votre avis sur cette source.

Vue 9 474 fois - Téléchargée 1 807 fois


Description

on a parfois besoin d'un menu en popup....
seulement si la fenêtre est skinnée (sans barre de titre), en passant par le créateur de menus de VB on se retrouve avec soit la barre de titre, soit la barre de menu au dessus de la skin. un peu très moche...

on peut toujours passer par une 2e form hidden mais ce n'est pas toujours évident pour renvoyer les évènements sur la bonne form.
ici une simple classe.
on crée les items (modifiables en cours), on appelle l'affichage du popup sur l'évènement désiré et la classe nous renvoie l'item cliqué.

comme d'hab ;)

Source / Exemple :


Option Explicit
Private WithEvents AfMenu As AfCls_PopupMenu
'
Private Sub Form_Load()
    Set AfMenu = New AfCls_PopupMenu
    AfMenu.ParentHandle = Me.hWnd
    AfMenu.AddItem 101, "Ouvrir"
    AfMenu.AddItem 102, "Enregistrer sous", False, False
    AfMenu.AddSeparator
    AfMenu.AddItem 103, "[X] Quitter"

'   OUBIEN
    AfMenu.CreateEasyMenu "Ouvrir;Enregistrer sous;;[X] Quitter"
End Sub
'
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then AfMenu.DisplayMenu
End Sub
'
Private Sub Form_Unload(Cancel As Integer)
    Set AfMenu = Nothing
End Sub
'
Private Sub AfMenu_Clicked(ByVal ID As Long, ByVal Caption As String, ByVal Checked As Boolean, ByVal Tag As Variant, ByVal IsChild As Boolean)
    Debug.Print "MENU CLICKé : " & ID & "   " & Caption & "   " & Checked
End Sub

Conclusion :


le but est uniquement un côté pratique. rien d'extraordiaire dans la création d'un popup mais çà peut toujours servir...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Pas forcément indispensable, dépend des cas, je dirai.
Messages postés
109
Date d'inscription
dimanche 27 juillet 2008
Statut
Membre
Dernière intervention
2 février 2012
3
manquerait pas Set AfMenu = Nothing sur Frm_TitleBar.frm?
Messages postés
60
Date d'inscription
mardi 4 septembre 2001
Statut
Membre
Dernière intervention
19 janvier 2009

Très bonne source, exactement ce que je recherchais. J'étais coincé car je ne pouvais utiliser convenablement le popupmenu classique avec feuille MDI+ feuilles filles.
Messages postés
13
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
8 mai 2009

Je crois que si on remet le caption, alors on a à nouveau la barre de titre, donc on peut à nouveau utiliser le créateur de menu ;-p
De toutes façons, ta classe reste utile quand on ne peut pas créer le menu à la création : création dynamique au moment de l'exécution quand par exemple on ne sait pas le nom ou le nombre des items, ...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
exact j'avais oublié mon comm ^^
cela dit on est alors obligé de supprimer le caption, or on peut en avoir besoin pour afficher la fenêtre dans la barre des tâches. bref en classe c'est toujours pratique non?
++ ;)
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.