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 :

Simuler un click sur la touche "tab"


Sujet :

Flex

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut Simuler un click sur la touche "tab"
    Bonjour,

    est-il possible de simuler un click sur la touche "tab" du clavier.

    Mon souhait :

    Lorsque je parcours les différents ITEM de ma datagrid (Editable=True) avec la touche "TABulation", je voudrais dans certain cas (Et suivant la valeur de l'item) passer tout de suite a l'édition de l'item suivant.

    Exemple du datagrid.

    SEXE | PRENOM | NOM | NOMJF | DATE NAISSANCE

    Je voudrais via la tabulation, passer de NOM à DATE NAISSANCE si le sexe est Masculin. (L'idéal serait en même temps de rendre l'item NOMJF non éditable).

    Merci pour vos suggestions

  2. #2
    Membre régulier Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut
    Voici la façon dont je procederais :

    J'ajouterais un event listenner pour les keyboarEvent dont l'utilisation est décrite ici.

    Dans ma fonction écoutant les KeyboardEvents, je testerais la propriété "keycode" de l'event et je la comparerais avec le keycode de la touche tabulation.

    Si on en crois ce tableau de valeurs, je testerais donc si KeyBoardEvent.keycode == 9 .

    Voila, j'ai jamais essayé mais c'est un point de départ.

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,

    pour compléter ce que dit ouaqa, je dirais que c'est précisément la façon de faire

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    merci de vos réponses mais ce n'est pas exactement ce que je veux faire.

    Le principe que vous m'expliquez permet de savoir quand un utilisateur à utilisé la touche "Tabulation".

    Je voudrais, moi, dans certain cas, dire à l'application de faire comme si l'utilisateur avait fait tabulation alors qu'il ne fait rien...

    merci

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,
    Pour cela il faut que tu changes le focus sur les cellules de ta datagrid.
    Plus concrètement, tu dois spécifier à ta datagrid quelle cellule devient éditable, avec une ligne comme celle-ci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myDataGrid.editedItemPosition = {rowIndex: 1, columnIndex: 1};
    Plus d'infos ici.

    Est-ce que ça répond à ta question ?

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    J'avais déjà vu cette fonction mais cela ne fonctionne pas dans mon cas. (Il semblerait que cela fonctionne avec des ItemRenderer).

    Voici un peu de code afin de vous montrer ce que je veux faire plus précisément.

    J'ai un tableau avec 2 colonnes (Montant Achat - Montant Vente).

    Seulement 1 des valeurs ne peut-être saisies... Lorsque je commence l'edit sur montantAchat, je vérifie si il existe un montant vente, si oui je voudrais placer le focus directement sur l'item montantVente.

    La fonction "EditedItemPosition" ne bouge pas mon focus dans la colonne Vente.

    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
     
     
    private function editData(evt:DataGridEvent):void {
      if (evt.dataField=="montantAchat"){
    	if (model.arrayChange.getItemAt(evt.rowIndex).montantVente!=''){
    	//trace ("Montant Vente déjà existant","Erreur");
    	mdg.editedItemPosition = {rowIndex: evt.rowIndex, columnIndex :1};
    	}					
      }
    }
     
     
    <mx:DataGrid id="mdg" itemEditBeginning="editData(event)" dataProvider="{model.arrayChange}">
       <mx:columns>
          <mx:DataGridColumn id="colonneMontantAchat" sortable="false" editable="true" dataField="montantAchat" headerText="MONTANT" />
          <mx:DataGridColumn  sortable="false" id="colonneMontantVente" editable="true" dataField="montantVente" headerText="MONTANT"/>
       </mx:columns>
    </mx:DataGrid>

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Est-ce que tu parviens à afficher la trace que tu as placée ?

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    Oui, la trace s'affiche bien avec (Enfin je l'ai en Alert dans mon code, petite faute de frappe ici, mais ca fonctionne).

  9. #9
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Peux-tu placer un EventListener du type 'itemEditBegin' pour voir si celui-ci est lancé par la ligne en question stp ?

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    Oui la ligne est lancée! En tous cas je récupère l'event.

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    Pour en revenir à l'événement
    je pense qu'il est bien lancé par ma datagrid (itemEditBeginning="editData(event)" ).

    Mais que lorsque dans cette fonction je fais le "mdg.editedItemPosition = {rowIndex: evt.rowIndex, columnIndex :1};" là mon événement n'est pas lancé.

    Je n'ai qu'une fois la trace de mon Event Listener...


  12. #12
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Citation Envoyé par npirard Voir le message

    Mais que lorsque dans cette fonction je fais le "mdg.editedItemPosition = {rowIndex: evt.rowIndex, columnIndex :1};" là mon événement n'est pas lancé.

    Je n'ai qu'une fois la trace de mon Event Listener...

    Oui, c'était ça que je te demandais
    Et en debug tu n'as aucune erreur ?

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    non rien du tout, aucune trace d'erreur...
    D'après la DOC, la fonction "itemEditBeginning" est utilisée avec un item renderer.

    C'est pour cela que je voulais simuler un click sur la touche "TAB". Mais si ce n'est pas possible, ce n'est rien.

    Merci pour ton aide!

  14. #14
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Et tu ne peux pas tout simplement envoyer un event de type 'KeyboardEvent' ? avec son keycode égal à 9 ?

    comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var evt:KeyboardEvent = new KeyboardEvent("keyDown");
    evt.keyCode = 9;
    evt.target = mdg;
    dispatchEvent(evt);

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 244
    Points : 179
    Points
    179
    Par défaut
    Je vais chercher de ce côté là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var evt2:KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_DOWN);
    evt2.keyCode = 9; 
    mdg.dispatchEvent(evt2);
    Voici le code exécuté, mais rien ne se passe!

    J'ai ajouter un listener sur l'événement KeyboardEvent, et il est bien exécuté 2 fois lorsque je passe dans la condition, mais la tabulation ne se fait pas dans ma datagrid.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/01/2007, 12h47
  2. Réponses: 4
    Dernier message: 25/07/2005, 14h24
  3. Simuler l'appui sur une touche, au niveau système
    Par debutant java dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/08/2004, 12h51

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