Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 17h22   #1
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Par défaut itemEditor et petit bug d'alignement

Bonjour,

j'utilise un itemEditor tout simple dans un dataGrid. Cela marche bien sauf que lorsque je quitte l'itemEditor pour réafficher l'itemRenderer par défaut, j'ai quelque fois (pas toujours) un alignement vertical dans la cellule erroné.

Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
...
colonne = new DataGridColumn();
colonne.setStyle("textAlign", TextAlign.CENTER);
colonne.setStyle("verticalAlign", VerticalAlign.MIDDLE);
colonne.dataField = "accu_totale";	
colonne.headerText = "accu. intraday";
colonne.itemEditor = new ClassFactory(AccuEditor);
colonne.editorDataField = "retour";
colonne.labelFunction = number_format_items;
colonne.setStyle("color", 0x0000FF);	
colonnes.push(colonne);
...
Mon itemEditor:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
package itemEditor
{	
	import mx.collections.ArrayCollection;
	import mx.containers.VBox;
	import mx.controls.Alert;
	import mx.events.FlexEvent;
 
	import spark.components.TextInput;
	import spark.events.TextOperationEvent;
	import spark.layouts.HorizontalAlign;
	import spark.layouts.VerticalAlign;
 
	public class AccuEditor extends VBox 
	{		
		[Bindable] public var retour:String;
		private var _data:Object;
		private var textInput:TextInput;	
 
		[Bindable]
		override public function set data(value:Object):void{
			_data = value;
			draw();			
		}
 
		override public function get data():Object{
			return _data;
		}
 
		private function draw():void
		{
			removeAllElements();
 
			setStyle("horizontalAlign", HorizontalAlign.CENTER);
			setStyle("verticalAlign", VerticalAlign.MIDDLE);
 
			textInput = new TextInput();
			textInput.percentWidth = 90;
 
			textInput.text = data.accu_totale;
			textInput.restrict = "0-9";
			textInput.addEventListener(FlexEvent.UPDATE_COMPLETE, changeText);
			addElement(textInput);			
 
			textInput.setFocus();
		}
 
		private function changeText(event:FlexEvent):void
		{
			data.accu_totale = TextInput(event.currentTarget).text;
			retour = data.accu_totale;						
		}			
 
	}
}
Pour rappel, ma donnée une fois modifiée apparait parfois avec un alignement vertical un peu décallé vers le bas. Quelqu'un verrait il pourquoi ?

Merci
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h51   #2
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Bonjour

Peut-être ainsi pour réaffecter le style suite à modif.

Code :
1
2
3
4
5
6
private function changeText(event:FlexEvent):void
	{
	data.accu_totale = TextInput(event.currentTarget).text;
	retour = data.accu_totale;
draw();	
}
C'est juste une hypothése. (?)
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 18h06   #3
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

merci pour l'hypothèse mais elle ne marche pas, elle fait même planter Flash (boucle infinie de création/destruction de TextInput).

J'aurais dis à la base que le problème ne se situait pas dans l'itemEditor puisque le problème apparait sur le renderer de la cellule mais je suis contredis par le fait que si j'utilise le itemEditor par défaut pour mes 2 cellules utilisant mon itemEditor, la première cellule après modification présente un décalage puis après modification de la 2ieme cellule, ces 2 cellules s'alignent correctement. Avec mon itemEditor, mes 2 cellules restent mal disposées.

C'est subtil comme comportement et je suis pas sur de bien expliquer

EDIT qui a son, importance : si je mets

dans mon itemEditor, bref n'importe quelle valeur le comportement est celui attendu. C'est donc probablement un problème d'encodage/formatage de mon objet data
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 01h32   #4
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Citation:
Envoyé par Madfrix Voir le message
... C'est donc probablement un problème d'encodage/formatage de mon objet data...
Possible.
Dans ce cas, puisque plusieurs valeurs sont susceptibles d'être modifiées ( 2 dans ton cas), pourquoi ne pas remplacer "Object" par "ArrayCollection", dans tes lignes de codes. ( Les 3 )
Just for test.
Ensuite, je ne vois pas.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 10h12   #5
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

pas possible a priori, je dois implementer IDataRenderer qui implemente ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 // Internal variable for the property value.
    private var _data:Object;
 
    // Make the data property bindable.
    [Bindable("dataChange")]
 
    // Define the getter method.
    public function get data():Object {
        return _data;
    }
 
    // Define the setter method, and dispatch an event when the property
    // changes to support data binding.
    public function set data(value:Object):void {
        _data = value;
 
        dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
    }
le getter renvoie donc un objet
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h42.


 
 
 
 
Partenaires

Hébergement Web