LISTBOX SET HIERARCHY : ça veut pas

Hello,

Je chercher à créer dynamiquement une listbox avec plusieurs niveaux de hiérarchie.
A force de ne pas y arriver, j’ai essayé de repartir sur une maquette simple, mais même là ça veut pas :

Je pars d’une liste flat comme ça :
[]32111229;“La liste flat”[/]

Puis je passe la première colonne en hiérarchique :
<code 4D>
ARRAY POINTER($tpHierarchie;0)
APPEND TO ARRAY($tpHierarchie;->ttPays)
LISTBOX SET HIERARCHY(*;“lbxTest”;True;$tpHierarchie)

</code 4D>

Jusqu’ici tout va bien :
[]32111251;“Premier niveau”[/]

Ensuite je veux ajouter un deuxième niveau de hiérarchie :
<code 4D>
ARRAY POINTER($tpHierarchie;0)
APPEND TO ARRAY($tpHierarchie;->ttPays)
APPEND TO ARRAY($tpHierarchie;->ttRegion)
LISTBOX SET HIERARCHY(*;“lbxTest”;True;$tpHierarchie)

</code 4D>

Et là j’arrive à ce résultat qui n’est pas exactement celui que j’attendais :
[]32111275;“2eme niveau”[/]

Je me retrouve avec la deuxième colonne reprise dans la première et pas de flèche pour déplier / contracter. Pas de nouvelle hiérarchie quoi.

Je dois rater un truc, une idée sur la façon correcte de procéder ?
Merci d’avance.

Bonjour,

Je trouve que déjà à la première étape de hiérarchie, ça ne va pas. Il y a une colonne vide à l’emplacement du pays.

Normalement, quand j’ajoute un niveau supplémentaire au nombre de hiérarchies que je souhaite, ça va mieux.
De plus, je rend invisible les colonnes faisant partie de la hiérarchie pour éviter qu’elles soient dupliquées.
Il vaut mieux aussi trier manuellement les tableaux de la listbox en fonction de la hiérarchie souhaitée.

Pour moi, le fonctionnement demeure obscur aussi, même après de multiples essais. Il y a aussi le problème des entêtes qui ne s’affichent pas forcément comme il faudrait.

Merci de ton retour.

Effectivement, la colonne vide n’est pas gracieuse et il faut un peu d’huile de coude pour la présenter proprement.

Là il me manque carrément le bouton pour contracter/déplier.
Quand tu dis que tu ajoutes un niveau supplémentaire, tu passes un tableau “à 0” juste pour avoir le fonctionnement attendu ?

J’y avais également passé pas mal de temps à une époque mais à force de bizarreries, j’avais fini par utiliser les listes hiérarchiques mais là je ne peux pas. :frowning:

Le niveau supplémentaire est le niveau discriminant. Dans ton exemple, ça devrait être la ville.

T’as le même résultat en passant par la liste des propriétés ? (juste pour tester)

T’as essayé https://kb.4d.com/assetid=77557ça> :?:

et t’as vu https://kb.4d.com/assetid=76393ça>

: extrait NT

Note: No matter which way you choose to make the list box
hierarchical, you always need to keep in mind that the hierarchical
display will be based on how the different arrays are sorted before
applying the hierarchy. 4D always looks at the cell below and if it
contains the same value, it is merged and this goes on until it finds
something different, so all the arrays must be sorted in a suitable
manner before display.

Effectivement, si j’ajoute la ville j’ai bien la région qui devient hiérarchique. :doubt:

@Manu, oui j’ai la même chose en passant par les propriétés de l’éditeur de form et j’ai pris soin des tris.

Apparemment je fais de la bonne façon mais le résultat n’est vraiment pas terrible, j’ai l’impression de devoir travailler nativement en workaround…

J’ajoute 1 niveau, j’ai 1 niveau de hiérarchie correctement visible, bien !
J’ajoute 2 niveaux, j’ai 1 niveau de hiérarchie correctement visible et une colonne zarb’ à reprendre à la main, pas d’indicateur / bouton de hiérarchie…
J’ajoute 3 niveaux, j’ai 2 niveaux de hiérarchie correctement visible.

Des colonnes qui se masquent bien pour le premier niveau mais pas pour les autres…

Boap, je trouve que le fonctionnement est illogique, j’ai l’impression de travailler comme un cochon. :-?

En passant via l’interface et en utilisant l’option créer une hiérarchie en ayant sélectionner les 3 colonnes, on obtient une listbox avec une hierarchie sur 2 niveaux avec une seule colonne

[]32112378;“a tester…”[/]

base exemple:
https://forums.4d.com/4DBB_Main/x_User/4079/files/32112466.zip

mais c’est vrai que l’interface en developpement fait des trucs en plus que tu dois bricoler pour le refaire par programmation… :frowning:

Je sais pas si l’interface fait des trucs en plus mais, à voir ton image, elle fait des trucs aussi mal.
Pour moi, l’entête 1 n’a rien à faire là. C’est l’entête 3 qui devrait s’afficher à mon avis sinon il se retrouve où ?

De toute façon, dans le peu de listbox hiérarchiques que j’utilise, je masque les entêtes qui ne veulent de toute façon rien dire puisque tu affiches 3 infos dans une seule colonnes ! :roll:

Tu veux mettre quoi dans ton entête :?: Ville , région, pays ? l’un n’est pas plus juste que l’autre.

Je ne défends pas la mise en œuvre qu’en fait 4D, je dis simplement que ce n’est pas simple.

Bon je continue mes tests, c’est quand même franchement l’bazar.
Quand je met ma première colonne en premier niveau hiérarchique : ok :
J’ai bien un bouton contracter et ma première colonne est fixée en hiérarchique, tout bien.

Je met la deuxième, j’ai pas de bouton contracter, la partie hiérarchique intègre bien ma colonne mais oublie de me la sortir des colonnes “non hiérarchiques” ->je me retrouve avec ma 2e colonne en double.

Je joue avec l’éditeur de form, je choisi 3 colonnes -> créer hiérarchie :
Oh ! un mange-colonne : elles ont purement et simplement disparues.
Je décoche “Liste hiérarchique” : toujours rien.
Pomme + Z : non plus, va falloir les refaire à la main…

Sous réserve que j’ai bien compris le fonctionnement et bien mis en oeuvre ce qui existe (j’espère encore être démenti) :
Feature request pour la v18 : des listbox hiérarchiques exploitables, là c’est du gadget.

Si tu refais un clic droit sur ta colonne, tu as l’option “Annuler hiérarchie” et là tu retrouves ta listbox avec tes 3 colonnes… va comprendre… :roll:

NB: il faut bien cliquer en dehors de la listbox ensuite pour qu’elle se rafraîchisse et montre les 3 colonnes…

C’est pour ça que je disais que l’interface en mode développement faisait des trucs bizarres en plus (masque des colonnes qui sont, en fait, toujours là ?)

Apres faudrait voir ce qui se passe derrière, si les tableaux sont réellement liés à la listbox (ex: si je supprime une ligne cela supprime t’il l’éléments dans chacun des tableaux, etc…)

Non, mais si tu fais comme je t’ai indiqué, tu arriveras quand même à quelque chose de potable.

  • Trier les tableaux
  • Fixer la hiérarchie avec un niveau de plus qu’attendu
  • Rendre invisible les colonnes de la hiérarchie (même celle en sus)