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:
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:
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:<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:
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:<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:
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! :)