Order listbox avec chiffre

  1. 11 months ago

    Bonjour, une listbox, lors du clique sur la colonne trie par ordre alphabetique, peut on la faire trier par ordre numerique ?

    Merci.

    (Google Translation follows)

    Vous pouvez lire la façon de le faire ici. C'est en espagnol, mais je suppose que la vidéo est assez facile à suivre dans n'importe quelle langue: http://www.aprendexojo.com/2016/09/listbox-desktop-ordenar-columnas/

  2. Eric d

    5 Jul 2017 Pre-Release Testers The French countryside

    Il faut utiliser le tri naturel. Heureuse coïncidence, je viens de publier en open source une librairie dédiée à ce type de tri. C'est par ici sur GitHub: NaturalSortLib . Et en plus la démo utilise justement une ListBox.
    Je suis très friand de commentaires ou critiques, alors n'hésite pas...

  3. Javier M

    5 Jul 2017 Pre-Release Testers, Xojo Pro Answer AprendeXojo - Madrid, Spain

    (Google Translation follows)

    Vous pouvez lire la façon de le faire ici. C'est en espagnol, mais je suppose que la vidéo est assez facile à suivre dans n'importe quelle langue: http://www.aprendexojo.com/2016/09/listbox-desktop-ordenar-columnas/

  4. Mathieu F

    5 Jul 2017 Cormeilles en Parisis, France

    Tu as l'evenement de lisbox : CompareRows
    Qui permet d'indiquer comment doit se faire le tri de la colonne. C'est toi qui va coder comment on compare deux lignes. Pour des nombres, tu peux convertir les contenus de case en nombre et faire la comparaison numérique.

    Dans la doc : http://docs.xojo.com/index.php/ListBox.CompareRows

  5. Mathieu F

    5 Jul 2017 Cormeilles en Parisis, France

    D'ailleurs ça tombe bien, dans la doc, il y a en premier exemple un tri de valeur sur la 2eme colonne d'une listbox :

    Function CompareRows( row1 As Integer, row2 As Integer, column As Integer, ByRef result As Integer ) As Boolean
      Select Case column
      Case 0 // This is a string column. Let the listbox manage it by returning false
        Return false
        
      Case 1 // This is our numerical value column. Let's do the work ourselves
        If Val( me.Cell(row1, column )) < Val( me.Cell(row2, column)) Then
          result = -1
        ElseIf Val(me.Cell(row1, column)) > Val( Me.Cell(row2, column)) Then
          result = 1
        Else
          result = 0
        End if
        Return True
        
      Else //some other column for which we let the listbox handle comparison
        Return false
      End Select
    End Function

or Sign Up to reply!