Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MSHFlexGrid -> tri automatique ?

1 réponse
Avatar
YannX
Bonjour,

J'avais déjà cherché, mais je n'ai trouvé qu'un Resize....
Comment puis-je réorganiser les données de mon Grid,
pour retrier les 20 lignes (selon les valeurs -en numérique- de la colonne
1),
à chaque sortie [ de cellule, ou de focus _j'utilise un KeyPressed.....]

A moins que vous ne me disiez de prendre plutot un autre controle ?
Mais pourquoi ? Et le quel alors.....

Merci d'un lien éventuel.....

1 réponse

Avatar
YannX
"YannX" a écrit dans le message de
news:
Bonjour,

J'avais déjà cherché, mais je n'ai trouvé qu'un Resize....
Comment puis-je réorganiser les données de mon Grid,
pour retrier les 20 lignes (selon les valeurs -en numérique- de la colonne
1),
à chaque sortie [ de cellule, ou de focus _j'utilise un KeyPressed.....]

A moins que vous ne me disiez de prendre plutot un autre controle ?
Mais pourquoi ? Et le quel alors.....



Désolé,

Car j'ai fait une faute d'orthographe : je travaille sur un MSFlexGrid
(sans H ! ! ! ;-)
et dans ce cas, cela ne marche pas tout seul ; l'aide MSDN c'est pas
terrible !

Bon, cela marcherait.....si je pouvais le faire appeler automatiquement !

Mon problème : dans le MSFlexGrid_KeyPressed
je ne peux pas recevoir et intercepter (apparement)
la touches {Enter} /bizarre car je gere l'ajout en fin de ligne/
(du moins pas d'arret en mettant un BreakPoint ! ! )
mais plus gênant, ni la touche {INS} ni {DEL}
ne sont accédées dans la fonction KeyPressed

Pourquoi ????
Merci de vos suggestions
Y@+


PS.: Pour ceux que cela intéresserait....
-------------------------------------------------
Public Sub MSFlexGrid_ReSortRows(flexgrid As MSFlexGrid)
Dim jRow As Integer, jBulle As Integer
With flexgrid
'Parcoure la colonnes
For jRow = 2 To .Rows - 1
' If (.TextMatrix(jRow, 0) < .TextMatrix(jRow - 1, 0)) Then
If (MSFlexGrid_Compare(flexgrid, jRow, jRow - 1)) Then
For jBulle = jRow To 2 Step -1
If (MSFlexGrid_Compare(flexgrid, jBulle, jBulle - 1)) Then _
Call MSFlexGrid_Swap(flexgrid, jBulle, jBulle - 1)
Next jBulle
End If
Next jRow
End With
End Sub ' MSFlexGrid_ReSortRows
Private Function MSFlexGrid_Compare(flexgrid As MSFlexGrid, jS As Integer,
jI As Integer, Optional jflexSort As Integer = flexSortNumericAscending) As
Boolean
' flexSort = integer cf.MSDN => Sort, propriété (contrôle MSHFlexGrid) '
non traité ici
MSFlexGrid_Compare = (CSng(flexgrid.TextMatrix(jS, 0)) <
CSng(flexgrid.TextMatrix(jI, 0)))
End Function
Private Sub MSFlexGrid_Swap(flexgrid As MSFlexGrid, jS As Integer, jI As
Integer)
Dim i&
Dim fCell As String
With flexgrid
For i = 0 To .Cols - 1
fCell = .TextMatrix(jS, i)
.TextMatrix(jS, i) = .TextMatrix(jI, i)
.TextMatrix(jI, i) = fCell
Next i
End With ' flexgrid
End Sub