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 04/01/2011, 04h52   #1
Candidat au titre de Membre du Club
 
Développeur informatique
Inscription : février 2004
Messages : 31
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2004
Messages : 31
Points : 13
Points : 13
Par défaut ItemRenderer dans une HorizontalList, passage de paramètres

Bonjour à tous/toutes.

Voila pour vous me décrire mon problème, je veux utiliser une HorizontalList et la remplir avec un composant personnalisé.

Code de mon composant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<mx:VBox name="{data.id}" xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="100" verticalGap="0">
	<mx:HBox width="100%" height="40%" horizontalGap="0">
		<mx:Canvas width="50%" height="100%" backgroundColor="{data.color1}"/>
		<mx:Canvas width="50%" height="100%" backgroundColor="{data.color2}"/>
	</mx:HBox>
	<mx:HBox width="100%" height="40%" horizontalGap="0">
		<mx:Canvas width="50%" height="100%" backgroundColor="{data.color3}"/>
		<mx:Canvas width="50%" height="100%" backgroundColor="{data.color4}"/>
	</mx:HBox>
	<mx:HBox width="100%" height="20%">
		<mx:Label text="{data.libelle}" color="{data.couleur_font}" width="100%" height="18" textAlign="center"/>
	</mx:HBox>	
</mx:VBox>
Pour renseigner les différentes données dynamique, j'utilise donc un dataProvider qui est un tableau contenant les différents éléments.

Mon problème est que seul le libellé est correctement affiché. Toutes mes couleurs ne sont pas prisent en compte.
J'ai débuggé, et mon tableau est correctement remplis, mes couleurs étant enregistrées comme des chaines à la forme "#FFFFFF" ne sont pas prises en compte.
Mon tableau de donnée est généré dynamiquement grâce à du code as3. Précédemment j'utilisais les balises mxml pour créer mon tableau et tout fonctionnait correctement.

Mon code utilisant les balises mxml donnait cela:

Code :
1
2
3
<mx:Array id="themes">
	<mx:Object libelle="Classique" couleur_font="#2b3200" color1="#4b5602" color2="#93971a" color3="#bbc14e" color4="#d3da82" />
	<mx:Object libelle="default" couleur_font="#000000" color1="#FFFFFF" color2="#000000" color3="#FFFFFF" color4="#000000" /> ....
et correspond à mon tableau qui est structuré de la façon suivante:

Code :
1
2
3
 
 myTab[0].libelle = "monlibelle";
 myTab[0].color1 = "#FFFFFF"; ....
Donc voila le problème, sachant que le libellé est correctement passé à mon composant, je ne comprend pas pourquoi il n'en est pas de même pour les couleurs!

Merci d'avance pour vos propositions et votre aide.
anfalsh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 10h27   #2
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 194
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 194
Points : 3 377
Points : 3 377
je crois me souvenir qu'il faut d'abord initialiser la couleur puis la changer via script

fait un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<mx:HBox width="100%" height="40%" horizontalGap="0">
		<mx:Canvas id="cnv1" width="50%" height="100%" backgroundColor="#FFFFFF"/>
		<mx:Canvas  id="cnv2" width="50%" height="100%" backgroundColor="#FFFFFF"/>
	</mx:HBox>
 
                <mx:Script>
                        <![CDATA[
                                override public function set data(value:Object):void
                                {
                                        super.data = value;
                                        cnv1.setStyle("backgroundColor", data.color1);
                                        cnv2.setStyle("backgroundColor", data.color2);
                                }
                        ]]>
                </mx:Script>
__________________

Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
Pensez au tag

Mon Blog sur la techno Flex
Ma page sur Developpez.com

Jim_Nastiq
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 12h51   #3
Candidat au titre de Membre du Club
 
Développeur informatique
Inscription : février 2004
Messages : 31
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2004
Messages : 31
Points : 13
Points : 13
Par défaut [Flex3] ItemRenderer dans une HorizontalList, passage de paramètres

Merci Jym Nastique, j'ai essayer ta méthode, le seul hic est qu'une erreur est levée. Le composant canvas est null au moment ou la fonction data est appelée apparement

le code de l'erreur:
Code :
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
Est elle est levé à cette endroit du composant:

Code :
1
2
3
4
5
6
7
8
9
override public function set data(value:Object):void
	        {
	                super.data = value;
	                cnv1.setStyle("backgroundColor", data.color1);
	                cnv2.setStyle("backgroundColor", data.color2);
	                cnv3.setStyle("backgroundColor", data.color3);
	                cnv4.setStyle("backgroundColor", data.color4);
	                titre.setStyle("color",data.couleur_font);
	        }
anfalsh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 13h47   #4
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 194
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 194
Points : 3 377
Points : 3 377
au pire tu effectues les affectations de style lors du creationComplete
__________________

Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
Pensez au tag

Mon Blog sur la techno Flex
Ma page sur Developpez.com

Jim_Nastiq
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 11h46   #5
Candidat au titre de Membre du Club
 
Développeur informatique
Inscription : février 2004
Messages : 31
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2004
Messages : 31
Points : 13
Points : 13
Mille merci maitre du flex, grâce à toi j'ai échappé à l'internement en hôpital psychiatrique car ce petit problème à faillit me rendre fou!

Encore merci!
anfalsh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h23.


 
 
 
 
Partenaires

Hébergement Web