Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [Résolu] listbox ou tree ?

Envoyé par : alien7

Date : 16/02/2007 17:15

Bonjour J'ai commencé à développer une petite extension avec les listbox, je cherche à faire comme l'extension sage (lecteur de flux rss), c'est a dire un arbre hiérarchiques sans le "tree" mais avec "listbox" est ce possible ? ou alors je dosi le faire avec les tree ? Merci

# Re: listbox ou tree ?

Envoyé par : papy

Date : 19/02/2007 10:47

Salut,

je ne crois pas que tu puisse utiliser une listbox pour faire une vue d'élément hiérarchique, en revanche il existe des composants qui permettent de faire cela, richlistbox et richtreeitem

D'un point de vue performances, tu as meilleur temps d'utiliser le tree directement si tu souhaite afficher de nombreux éléments (des centaines), c'est terriblement plus efficace ;)

# Re: listbox ou tree ?

Envoyé par : alien7

Date : 19/02/2007 17:00

Interressant ca, mais comment on s'en sert ? Il faut dl quelque chose ou pas ? je ne trouve rien sur le site que tu as donné en liens.

Merci encore

# Re: listbox ou tree ?

Envoyé par : papy

Date : 19/02/2007 17:10

Effectivement pas de lien sur le site, apparemment soit ils ne l'ont pas fini soit ils ne l'ont pas mise à disposition... Je n'ai jamais utilisé ce composant, je me suis juste rappelé d'en avoir parlé quand j'ai lu ton POST...

En attendant essai de regarder tu côté des arbres, c'est un peu repoussant au début mais on devient très vite accro ! :P

# Re: listbox ou tree ?

Envoyé par : alien7

Date : 19/02/2007 18:27

Ce qui me gene avec les arbres c'est que dans la balise treerow ou treecell je ne peux pas mettre d'evenement

ondragover="nsDragAndDrop.dragOver(event,boardObserver)"

En fait lorsque je fais glisser d'un element j'aimerais choisir la ligne et le selectionner suivant le ondragover. Le trcu c'est que je mettais un evenement pour chaque listitem avec un listbox. Si il y'a un moyen de faire ca je veux bien continuer avec les arbres.

De plus je n'arrive pas à cahcer les treecols, comment aire Merci :)

# Re: listbox ou tree ?

Envoyé par : papy

Date : 20/02/2007 11:36

Qu'entend tu pas cacher les treecols ? Ne pas afficher l'entête de l'arbre ? Si c'est ca, il faut mettre l'attribut collapsed à true sur le treecols

 <tree>
   <treecols collapsed="true">
     ...
   </treecols>
   ...
 </tree>

Sinon pour les évènements effectivement tu ne peux pas les récupérer directement sur les lignes de l'arbre. A la place du les récupèrent au niveau du treechildren et ensuite tu récupère la ligne concerné par l'évènement

 <treechildren ondragover="...">
   ...
 </treechildren>

Pour récupérer l'index d'une ligne de l'arbre à partir d'un évènement sur le treechildren :

 var tree = event.target.parentNode;
 var idx = tree.treeBoxObject.getRowAt(event.clientX, event.clientY);

Il y a pas mal de documentation sur les arbres et les interfaces que tu peux utiliser avec ici (entre autre)

Si tu veux récupérer le contenu des cellules, il faut te pencher sur les TreeView, elles permettent de le faire assez facilement.

# Re: listbox ou tree ?

Envoyé par : alien7

Date : 20/02/2007 15:44

Super, génial ca marche impec, sauf pour :

<treecols collapsed="true">

Qui fait disparaitre mes données, je ne comprends pas si je l'enleve mes données des cellules apparaissent si je le mets je ne vois plus mes données mais la table est toujours present.

Je ne sai spas si je me suis fais bien comprendre en fait je veux cacher les headers des colonnes. je ne veux pas que le nom de la colonne apparraisse.

Bref l'essentiel marche. Merci beaucoup papy, j'ai bcp appris grace à toi

# Re: listbox ou tree ?

Envoyé par : papy

Date : 21/02/2007 11:27

Pour les colonnes, c'est bien ce que j'avais compris mais je n'avais pas remarqué que ça cachait le contenu ;) (test un peu simpliste...)

Après avoir un peu chercher, il y a une solution :

mettre hidecolumnpicker sur le tree, et hideheader sur les treecol (sans label !)

 <tree flex="1" hidecolumnpicker="true">
   <treecols>
     <treecol hideheader="true"/>
     <treecol hideheader="true"/>
   </treecols>
   
   <treechildren>
     ...
   </treechildren>
 </tree>

Sinon tant mieux si tu as appris des trucs sur les arbres, c'est un composant très puissant mais un poil complexe. Une fois que tu auras bien ingéré tout ca jette un coup d'oeil aux templates, ca change la vie ca aussi !

# Re: listbox ou tree ?

Envoyé par : alien7

Date : 21/02/2007 11:59

Yes c'est bien ca, ca marche :) Que dire ? Merci beaucoup papy

# Re: listbox ou tree ?

Envoyé par : Christophe Charron

Date : 21/02/2007 14:45

Juste une petite précision : pour que l'entête soit caché, il ne faut pas qu'il y ait d'attribut "label"

<treecol hideheader="true" />

fonctionnera alors que

<treecol label "entete inutile" hideheader="true" />

ne fonctionnera pas.

L'utilisation de "ignoreincolumnpicker" sur treecol permet aussi de garder la possibilité d'avoir le "columnpicker" en excluant certaines colonnes.

<tree >
 <treecols>
  <treecol ignoreincolumnpicker="true" primary="true" hideheader="true"/>
  <treecol label="5°colonne visible : quel comble" />
 </treecols>
...

</tree>

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.