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.....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
"YannX" <ydx_nospam@yahoo.fr> a écrit dans le message de
news:uiWfVO70EHA.1564@TK2MSFTNGP09.phx.gbl...
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
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