Bonjour !
En fait, j'aimerai savoir comment enlever efficacement des doublons sur une liste (composant "List"). Je travaille sur une liste liée à un champ de texte.
Ici, l'originalité est de travailler avec un fichier txt (très pratique car elle peut être remplie par une personne ayant aucune notion en xml, informatique ou autre.
Le fichier txt se présente ainsi :
Recettes.txtNom_de_recette1=Crème au citron
&Type1=Dessert
&Recette1=Ingrédient : 4 citrons, ...
&Nom_de_recette2=...
Jusqu'ici, il s'agit d'une liste de varisbles simulant un tableau avec une variable i qui par la suite simulera le 1 de la variable Type1, Nom_de_recette1 et Recette1, puis le 2 de la variable Recette2 etc...
En fait, au démarrage, on charge le fichier txt, et on crée un tableau limité à un nombre max de recettes (100)
SCRIPT 1mes_recettes=new Array(100);
tmpRecette=new Object();
loadVariables("Bdd/Recettes.txt", "_root");
sur l'image contenant mon composant "List" ayant pour occurence Liste1, j'ai :
SCRIPT 2_root.Liste1.removeAll();
i = 1;
tmpAuteur = eval("Nom_de_recette"+i);
while(tmpRecette!=undefined){
mes_recettes[i-1] = new Object();
mes_recettes[i-1].id = i;
mes_recettes[i-1].type=eval("Type"+i);
mes_recettes[i-1].nom_de_recette=eval("Nom_de_recette"+i);
mes_recettes[i-1].recette=eval("Recette"+i);
Liste1.addItem(eval("Nom_de_recette"+i), i);
i++;
tmpRecette= eval("Nom_de_recette"+i);
}
Liste1.sortItemsBy("label", "ASC");
Il est à noté que id permet de gérer plus facilement le tableau et les variables. Sur mon "Liste1" (composant List) j'ai mis le script suivant :
SCRIPT 3on(change) {
for(i=0;i<_root.mes_recettes.length;i++){
if(_root.mes_recettes[i].id==this.selectedItem.data) {
_root.Contenu=_root.mes_recettes[i].Recette;
}
}
}
Ainsi, j'ai donc une liste de Nom_de_recette qui retourne dans la variable "Contenu" la recette en entière. DAns une zone de texte, j'associe la variable Contenu, et le tour est joué.
MON PROBLEME
En fait, j'ai mis mon script 3 sur une 2eme liste ayant pour occurence Liste 2.
Je remplace également :
Liste1.addItem(eval("Nom_de_recette"+i), i);
par
Liste1.addItem(eval("Type"+i), i);
Et pour mon composant "Liste1", je met le script suivant :
on(change) {
_root.Liste2.removeAll();
TmpRecette=this.selectedItem.data;
for(i=0;i<_root.mes_recettes.length;i++){
if(TmpRecette==_root.mes_recettes[i].id){
_root.Liste2.addItem(_root.mes_recettes[i].nom_de_recette, _root.mes_recettes[i].id);
}
}
Liste2.sortItemsBy("label", "ASC")
}
En clair, on a une liste 1 avec un type de cuisine (dessert, entrée, plat principal) qui, amène une seconde liste de recette, qui, sur clic, affiche dans une zone de texte ayant la variable "Contenu" la recette.
Le problème est que j'ai des types redondants. Par exemple, Dessert s'affiche plusieurs fois dans la liste des types de plat. J'aimerai faire un script simple, mais j'ai remarqué que pour deux éléments de ma liste 1 (exemple : "dessert") pour le premier, ma liste2 est vide, et le deuxième non ?
Quelqu'un saurait-il faire une solution simple et pas trop lourde en nombre de lignes ?