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 375 fois - Téléchargée 1 769 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

Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
Pas forcément indispensable, dépend des cas, je dirai.
cs_candyraton
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?
cs_Ouneufe
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.
odureux
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, ...
PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
28 -
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?
++ ;)

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.