Listin Gambas2
Création d'un programme en Gambas2 : un répertoire téléphonique pas à pas
Origine : http://listingambas.blogspot.com/2011/06/modulo-ordenar-ordenar-un-gridviews-con.htmlModule Ordonner. Ordonner un gridviews avec _ColumnClick
Comment pouvons-nous faire?
Nous allons utiliser l'événement _ColumnClick qui se produit lorsque l'on clique sur le titre de la colonne. Nous allons également créer une variable ordonneliste, indiquant l'ordre de tri (passant de A à Z, ou de Z à A). Cette variable est globale, et il faut la créer dans le module var .
Dans le module Ordonner, nous créerons deux procédures selon l'ordre croissant ( ord_AZ ) ou décroissant ( ord_ZA ), et nous passerons aux deux la grille que nous voulons trier (dans notre cas Fmain.Gridviewdonnees) et une colonne (column), qui prend une valeur lorsque l'événement. _ColumnClick survient.
Dans le module Var :
PUBLIC ordonneliste AS Integer
Dans le module Fmain :
PUBLIC SUB GridViewDonnees_ColumnClick(Column AS Integer )
IF
var. ordonneliste
=
0THEN
Ordonner. ord_AZ
(GridViewDonnees, column)
var. ordonneliste
=
1
ELSE
var. ordonneliste
=
0
Ordonner. ord_ZA (GridViewDonnees, column)
ENDIF
END
Dans le module Ordonner :
'
Gambas
module file
PUBLIC SUB ord_AZ (grid AS GridView, a AS Integer )
'a: indique la colonne que nous agençons
'grid: est la grille que nous agençons
PUBLIC SUB ord_AZ (grid AS GridView, a AS Integer )
'a: indique la colonne que nous agençons
'grid: est la grille que nous agençons
DIM
limite AS
Integer
DIM
change1 AS STRING
DIM
i AS
Integer
DIM j AS Integer
DIM
col AS
Integer
grid. visible
=
FALSE
limite =
grid
. Rows.COUNT
IF (grid. columns.COUNT <a +
1
) OR
a < 0
THEN
Message. Erreur
( "Erreur
de
colonne à agencer" )
GOTO
sortieordonner
ENDIF
FOR
i =
0
TO
limite -
1
FOR j =
0
TO
limite -
2
IF UCase
$ (grid [j, a]. Text
) > UCase
$ (grid [j +
1
, a]. Text
) THEN
FOR col =
0
TO
. grid. columns.COUNT
-
1
change1 =
grid [j, col]. Text
grid [j, col]. text
=
grid [j +
1
, col]. Text
grid [j +
1
, col]. text
=
change1
NEXT
ENDIF
NEXT
NEXT
sortieordonner:
grid. visible
=
TRUE
END
Plusieurs choses à commenter :
1. La méthode de tri choisie est appelé "Tri à bulle".
Sur Internet, vous trouverez l'explication de cet algorithme de tri

2. Pour être insensible à la casse, on convertit des chaînes en majuscules en utilisant UCase$ et ensuite on les compare.
3. Si on clique sur la colonne des images elles sont ordonnées selon leur chemin d'accès.