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

Flex Discussion :

Creer menu (clique droit) [AIR]


Sujet :

Flex

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Creer menu (clique droit)
    Bonjour,

    Je voudrais créer une menu lorsque je fait un clique droit dans mon appli AIR.
    J'ai créer un tableau, je voudrai afficher le contenu d'une ligne dans une alerte après avoir cliquer sur l'item "détail" (par ex) du menu généré par le clique droit.

    J'ai entendu parler des menus contextuels et des nativeMenu, mais je n'arrive pas à les utilisés.

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Flex 4 - ContextMenu
    Hello scudhit,

    Pour ajouter un menu sur le bouton de droite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    var customMenuItem1:ContextMenuItem = new ContextMenuItem("MonMenu", false, false);
     
    customMenuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doOnMenuClick);		
     
    var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
     
    contextMenuCustomItems.push(customMenuItem1);

    Voilu ^^

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merci ca fonctionne parfaitement.

    J'aimerai cependant savoir comment rattacher le menu a un objet particulier.
    Example : menu d'un tableau "-supprimer elem", "-editer elem" etc
    menu d'un autre tableau "-ajouter elem" ....

    Tu vois ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    J'ai pas bien compris. Qqc comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var monTab : Array = Array['menu1' , 'menu2' , 'menu3'];				
    var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
     
    for ( var i : Number = 0 ; i < monTab.length ; i++)
    {
     
     var customMenuItem1:ContextMenuItem = new ContextMenuItem( monTab[i], false, false);
     
    customMenuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doOnMenuClick);								contextMenuCustomItems.push(customMenuItem1);
    }

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Non en fait j'ai 2 tableau. je voudrais que le menu diffère en fonction de l'endroit ou je fais le clique droit.

    J'ai 2 tableau "titire" et "filtre"

    Si je fait un clique droit dans le tableau "titre" j'aimerai avoir un menu avec "lire" "classer".
    Si je un clique droit dans le tableau "filtre" j'aimerai avoir un menu avec "supprimer" "ajouter".

    Un peu comme sur deezer.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Enfaite, quand tu parles de tableau, tu parles d'une Grid ou List, je pense.

    A ma connaissance, tu n'as pas d'évènement sur le bouton de droite de la souris.

    En revanche, ce que tu peux faire, c'est :

    - Sauvegarder l'array de base du contexte menu dans une variable global.

    - Push les nouvelles valeurs dans l'array sur un évènement MouseOver de chacune de tes grids


    Comme cela, lorsque ta souris focusera ta grid, le menu contextuel changera.

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Oui je parle de DataGrid,

    J'ai fais ce que tu m'as dis, j;ai ajouter 2 eventListener, voici les 2 fonctions que j'appel en callback

    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
    private function editTitle(e:MouseEvent):void {
    	monTab = new Array('Ajouter a la playlist');
    	var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
     
    	for ( var i : Number = 0 ; i < monTab.length ; i++)
    	{
    		//Alert.show(monTab[i]);
    		var customMenuItem2:ContextMenuItem = new ContextMenuItem(monTab[i], false, true);
    		customMenuItem2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doOnMenuClick);
    		contextMenuCustomItems.push(customMenuItem2);
    	}
    }
     
    private function editPlay(e:MouseEvent):void {
    	monTab = new Array('Supprimer' , 'Renommer');
    	var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
     
    	for ( var i : Number = 0 ; i < monTab.length ; i++)
    	{
    		//Alert.show(monTab[i]);
    		var customMenuItem1:ContextMenuItem = new ContextMenuItem(monTab[i], false, true);
    		customMenuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doOnMenuClick);
    		contextMenuCustomItems.push(customMenuItem1);
    	}
    }
    Ça fonctionne bien, par contre le menu n'est pas réinitialisé, je garde donc les anciens items et je rajoute les nouveaux.... Comment réinitialisé le menu pour ajouté seulement les items que je veux sans garder les anciens ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Il suffit que tu réinitialises ton tableau avant le rajout dans tes callbacks

    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
     
    private function editTitle(e:MouseEvent):void {
     
    // Initialisation :)
    FlexGlobals.topLevelApplication.contextMenu.customItems=[];
     
    	monTab = new Array('Ajouter a la playlist');
    	var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
     
     
    	for ( var i : Number = 0 ; i < monTab.length ; i++)
    	{
    		//Alert.show(monTab[i]);
    		var customMenuItem2:ContextMenuItem = new ContextMenuItem(monTab[i], false, true);
    		customMenuItem2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doOnMenuClick);
    		contextMenuCustomItems.push(customMenuItem2);
    	}
    }
     
    private function editPlay(e:MouseEvent):void {
    	monTab = new Array('Supprimer' , 'Renommer');
     
    // Initialisation :)
    FlexGlobals.topLevelApplication.contextMenu.customItems=[];
     
     
    	var contextMenuCustomItems:Array = FlexGlobals.topLevelApplication.contextMenu.customItems;
     
    	for ( var i : Number = 0 ; i < monTab.length ; i++)
    	{
    		//Alert.show(monTab[i]);
    		var customMenuItem1:ContextMenuItem = new ContextMenuItem(monTab[i], false, true);
    		customMenuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doOnMenuClick);
    		contextMenuCustomItems.push(customMenuItem1);
    	}
    }

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup ca fonctionne.

  10. #10
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut


    pourquoi utiliser le menu contextuel global (FlexGlobals.topLevelApplication.contextMenu) ?

    Chaque objet InteractiveObject peut avoir un menu contextuel spécifique.
    voir doc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier menu clique droit sur bureau
    Par hl037 dans le forum KDE
    Réponses: 2
    Dernier message: 30/11/2012, 18h46
  2. script menu clique droit
    Par calitom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/09/2007, 15h21
  3. Ajout de menu perso sur clique droit de la souris !!
    Par Kyp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/12/2005, 17h06
  4. (Menu contextuel) Clique droit sur images
    Par Furius dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 02/10/2005, 20h21
  5. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07

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