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

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)