Conversion difficile d'un ListBox hierarchique vers un DesktopListBox

Bonjour,

J’essaie de traduire un code d’exemple de ListBox hierarchique (possibilité de développer/réduire certaines branches) qui comprend des Checkbox sur chaque item.
J’ai un exemple complet (qui date) avec un Listbox qui fonctionne mais quand je passe le code sur un nouveau “DesktopListBox”, de nombreuses commandes ont été modifiées depuis et j’ai des messages d’erreur sur pratiquement toutes les lignes !, même celles que j’ai adapté avec les nouvelles commandes. c’est ce que je trouve curieux.Par exemple j’ai très souvent le message
Type “DesktopListBox” has no member named “CellTypes” sur la ligne

Me.ColumnTypeAt(0) = ListBox2.CellTypes.Checkbox

Voici le code complet de l’évènement ListBox2.Opening :

Me.ColumnTypeAt(0) = ListBox2.CellTypes.Checkbox //Listbox.TypeCheckbox

Me.AddFolder "Dossier 1"
Me.RowTagAt(Me.LastIndex) = "f1" //LastRowIndex ou LastColumnIndex ou LastAddedRowIndex

Me.AddFolder "Dossier 2"
Me.RowTagAt(Me.LastIndex) = "f2"

Me.AddFolder "Dossier 3"
Me.RowTagAt(Me.LastIndex) = "f3"

La documentation Xojo mentionne “…La ligne doit avoir été ajoutée avec la méthode AddFolder”, ce qui est le cas ci-dessus mais ou est cette méthode ? je ne l’ai pas trouvé dans la Doc en ligne . Je ne sais pas si la syntaxe est encore bonne ou si elle a changée.

Même problème pour les 2 autres événements “CellAction” et “RowExpanded” (ci-dessous) :

For i As Integer = 1 To 5
    Me.AddRowAt Me.Cell(row, 0) + " - Subentry " + CStr(i)
  Me.RowTagAt(Me.LastIndex) = Me.RowTagAt(row)
  Next

Merci pour votre aide.

Et voici :

Me.ColumnTypeAt(0) = DesktopListBox.CellTypes.CheckBox

Me.AddExpandableRow “Dossier 1”
Me.RowTagAt(Me.LastRowIndex) = “f1” //LastRowIndex ou LastColumnIndex ou LastAddedRowIndex

Me.AddExpandableRow “Dossier 2”
Me.RowTagAt(Me.LastRowIndex) = “f2”

Me.AddExpandableRow “Dossier 3”
Me.RowTagAt(Me.LastRowIndex) = “f3”

Et il faut que dans le panneau de l’inspecteur tu aies activé l’option “Allow Expandable Rows”

Tu as un très bon exemple dans : Examples > Desktop > Controls > Listbox > SourceListExample.xojo_binary_project
:slight_smile:

Merci @Valdemar_De_SOUSA pour ta réponse mais “Allow Expendable Rows” est pourtant bien activé sur mon ListBox ! Sinon, le code te parait correct ?

As-tu regardé l’exemple contenu dans la version 2022r1.1 ?

Le nom est “ListBoxExample.xojo_binary_project” (et non SourceListExample). Je regarde cela de plus prêt.

Oui je vois que le code est très différent. Il a beaucoup évolué.
Il me reste à adapter l’événement ‘CellAction’ dont je ne trouve pas l’équivalent.

//CellAction Event
If Me.RowIsFolder(row) Then 
  If Me.ExpandedRowAt(row) Then //Expanded(row)
    
    For i As Integer = row + 1 To Me.ListCount - 1
            If Me.RowTagAt(i) = Me.RowTagAt(row) Then Me.CellCheckBoxStateAt(i, 0) = Me.CellCheckBoxStateAt(row, column)
          Next
      End If
End If

Utilise : CellPressed (Row As [Integer], Column As [Integer], X As [Integer], Y As [Integer]) As [Boolean]

ou CellAction (Row As [Integer], Column As [Integer])

Bonjour,
Bon, je galère toujours avec les ListBox hirarchiques contenant des Checkbox !
J’ai 2 questions principales :
Comment tester si c’est un élément de ListBox (hierarchique) est “extensible” ? (avec la petite flèche de déploiement >)
La commande suivante semble ne plus être reconnue:

If ListBox1.ExpandedRowAt(row) Then... 

et dans ce cas, lorsque je coche l’élément “parent”, comment Checker (cocher) tous ses éléments filles (uniquement) ?

For i As Integer = row + 1 To Me.RowCount - 1
   Me.CellCheckBoxStateAt(i, 0) = Me.CellCheckBoxStateAt(row, column)
  Next

Coche tous les checkbox, à partir de celui coché, sans distinction !

Merci pour votre contribution,

Bonjour à tous,
J’ai avancé sur mon projet, même si je rencontre encore pas mal d’écueil. Le principal, est comment ajouter des éléments (items) filles, dans l’évènement “RowExpanded” ? car lorsque l’on développe une branche, les numéros de lignes (row) changent ! A chaque fois qu’une branche est développée chaque numéro de ligne est incrémentée d’autant d’éléments filles dans la branche. L’idéal serait d’ajouter les éléments directement dans l’événement Opening, mais comment ?
Mon code provisoire est donc inopérant:

Select case row
Case 2
  Me.AddRow("Index 2 Child 0")
Case 3
  Me.AddRow("index 3 - Child 0")
Case 5
  Me.AddRow("Index 5 Child 0")
Case Else
  msgbox("index inconnu !")
End Select

Help please !

Finalement ça marche en prenant le nom des éléments parents:

Select Case Me.CellTextAt(row)