Bonjour,
J'ai une application flex avec une datagrid définie comme ça
Mon problème est en plusieurs parties. Je voudrais que l'utilisateur puisse se déplacer de champs éditable en champ éditable via tab.
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 <mx:DataGrid id="vListTpt" width="100%" height="121" change="ctrlModif()" click="{clickListTpt();}" editable="true" itemEditEnd="{itemEditEndTpt(event);}" tabIndex="11" textAlign="left" tabFocusEnabled="true" > <mx:columns> <mx:DataGridColumn headerText="N°" width="23" dataField="Rangtpt" editable="false" itemRenderer="renderer.TptRenderer" textAlign="center"/> <mx:DataGridColumn headerText="Date départ" width="76" dataField="DatedepV" editable="true" itemRenderer="renderer.TptRenderer" id="TptDateDeb" textAlign="center"> <mx:itemEditor> <mx:Component> <Renderer:DateEditor formatString="DD/MM/YYYY" yearNavigationEnabled="true" dayNames="[Dim,Lun,Mar,Mer,Jeu,Ven,Sam]" monthNames=" [Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre]" change="{MajDateDepV();}" DefVal="1" tabEnabled="true"/> </mx:Component> </mx:itemEditor> </mx:DataGridColumn> <mx:DataGridColumn headerText="Ressource" width="68" dataField="Ressource" editable="false" showDataTips="true" dataTipField="Ressource" itemRenderer="renderer.ResTptRenderer" textAlign="center"/> <mx:DataGridColumn headerText="H. Départ" width="68" dataField="Hdep" editable="true" itemRenderer="renderer.HeureDebRenderer" rendererIsEditor="true" editorDataField="Heure" textAlign="center" /> <mx:DataGridColumn headerText="Date arrivée" width="76" dataField="DatearrV" editable="true" itemRenderer="renderer.TptRenderer" id="TptDateArr" textAlign="center"> <mx:itemEditor> <mx:Component> <Renderer:DateEditor formatString="DD/MM/YYYY" yearNavigationEnabled="true" dayNames="[Dim,Lun,Mar,Mer,Jeu,Ven,Sam]" monthNames="[Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre]" change="{MajDateArrV();}" DefVal="2"/> </mx:Component> </mx:itemEditor> </mx:DataGridColumn> <mx:DataGridColumn headerText="H. Arrivée" width="68" dataField="Harr" editable="true" itemRenderer="renderer.HeureFinRenderer" rendererIsEditor="true" editorDataField="Heure" textAlign="center"/> <mx:DataGridColumn headerText="UF Arrivée" width="73" dataField="Numsrvarr" editable="false" showDataTips="true" dataTipField="Numsrvarr" itemRenderer="renderer.TptRenderer" textAlign="center"/> <mx:DataGridColumn headerText="Distance" width="58" rendererIsEditor="true" editorDataField="newDist" itemRenderer="renderer.DistRenderer" textAlign="center"/> </mx:columns> </mx:DataGrid>
Au départ ça ne fonctionne qu'avec les champs de date ( et encore seul la zone se sélectionne, elle ne réponds pas à un événement clavier)
Donc j'ai 3 objets différents dans cette datagrid dont je voudrais gérer le focus:
les dates :
les heures :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <mx:DataGridColumn headerText="Date départ" width="76" dataField="DatedepV" editable="true" itemRenderer="renderer.TptRenderer" id="TptDateDeb" textAlign="center"> <mx:itemEditor> <mx:Component> <Renderer:DateEditor formatString="DD/MM/YYYY" yearNavigationEnabled="true" dayNames="[Dim,Lun,Mar,Mer,Jeu,Ven,Sam]" monthNames="[Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre]" change="{MajDateDepV();}" DefVal="1" tabEnabled="true"/> </mx:Component> </mx:itemEditor> </mx:DataGridColumn>
dont le renderer a cette tête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <mx:DataGridColumn headerText="H. Arrivée" width="68" dataField="Harr" editable="true" itemRenderer="renderer.HeureFinRenderer" rendererIsEditor="true" editorDataField="Heure" textAlign="center"/>
La "CASE" de la datagrid reçoit le focus de tabulation depuis que j'ai ajouté "implements="mx.managers.IFocusManagerComponent"" mais les Numstepper ne reçoivent pas le focus dans le détail , et si j'appuie sur TAB quand ma case de renderer a le focus ça passe à la prochaine case focusable. Je voudrais que ça aille jusqu'au stade où l'utilisateur peut faire: tab 15 tab 30 tab pour renseigner 15h30 par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" textAlign="right" height="20" width="50%" horizontalGap="0" scaleX="0.5" scaleY="1" focusEnabled="false" tabChildren="true" tabFocusEnabled="false" implements="mx.managers.IFocusManagerComponent" > <mx:Script> <![CDATA[ .... ]]> </mx:Script> <mx:NumericStepper id="vHeure" change="HeureChange();" valueCommit="HeureChange();" minimum="0" maximum="24" stepSize="1" tabFocusEnabled="true" focusEnabled="true" tabEnabled="true" tabIndex="1" /> <mx:Label text=":" /> <mx:NumericStepper id="vMin" change="HeureChange();" valueCommit="HeureChange();" minimum="0" maximum="59" stepSize="1" tabFocusEnabled="true" focusEnabled="true" tabEnabled="true" tabIndex="2"/> </mx:HBox>
et les distances:
avec renderer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <mx:DataGridColumn headerText="Distance" width="58" rendererIsEditor="true" editorDataField="newDist" itemRenderer="renderer.DistRenderer" textAlign="center"/>
où là même comportement constaté la case de la datagrid se focusse mais pas le textarea et rentrer un chiffre au clavier ne fait rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" textAlign="right" height="20" width="60" horizontalGap="0" implements="mx.managers.IFocusManagerComponent" focusEnabled="false" tabEnabled="false" tabFocusEnabled="false"> <mx:Script> <![CDATA[.... ]]> </mx:Script> <mx:TextArea id="distGlob" width="35" height="20" editable="true" themeColor="#009DFF" change="this.newDist=new Number(distGlob.text);" updateComplete="this.newDist=new Number(distGlob.text);" text="{data.newDistTot}" tabFocusEnabled="true" focusEnabled="true" tabEnabled="true" tabIndex="1"/> <mx:Label text="km" width="25" height="20"/> </mx:HBox>
J'ai vu qu'il existait un IFocusManagerComplexComponent mais si j'essaie de le mettre en implements Flash Builder met une erreur sans donner de message explicatif ( une croix d'erreur générale sans ligne pointée)
J'espère que je suis claire et que quelqu'un aura une idée pour m'indiquer une piste !
Merci à tous!
Partager