Salut
J’ai un MSHFlexGrid de 9 colonnes et de x lignes, en temps ordinaire x et de l’ordre de 200/300 lignes au maximum.
Mais, en cette fin d’année les utilisateurs veulent pouvoir afficher différentes vues à des fins statistiques suivant des critères qu’ils ont la possibilité de définir dans l’interface.
Cela amène l’affichage de plusieurs centaines de lignes (aux plus 995, mais chaque années cela va augmenter plus ou moins d’un millier).
Mon problème, qui sera de plus en plus criant dans les mois et années à venir, dans ce MSHFlexGrid ils ont la possibilité de rechercher une occurrence (mini moteur de recherche).
Pour la recherche c’est Ok, c'est suffisamment rapide.
La première ligne trouvée pour la première occurrence n’étant pas toujours visible, jusqu’à maintenant j’utilise ce code pour la faire apparaitre.
En regardant l’aide MSDN de RowIsVisible il est indiqué :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Option Explicit Private Type Idx Indx As Integer Xcol As Integer Xlgn As Integer End Type Dim IdxRech() As Idx '.............. Private Sub VisualiseRecherche() MSHFlexGrid1.Row = IdxRech(IdxRec).Xlgn: MSHFlexGrid1.Col = IdxRech(IdxRec).Xcol 'IsVisibleRow, Renvoie ou définit une valeur qui détermine si une ligne spécifique est visible. If MSHFlexGrid1.RowIsVisible(IdxRech(IdxRec).Xlgn) = False Then For T = MSHFlexGrid1.rows - 1 To 1 Step -1 MSHFlexGrid1.TopRow = T If MSHFlexGrid1.RowIsVisible(IdxRech(IdxRec).Xlgn) = True Then Exit For Next T End If End Sub
Donc plutôt qu’une boucle, je tente ces 3 lignes à tour de role, en pensant que cela sera plus rapide de faire apparaitre la ligne voulue.Renvoie ou définit une valeur qui détermine si une ligne spécifique est visible.
object.RowIsVisible(index) [=Boolean]
index Valeur de type Long qui indique la colonne. (Colonne ?)
Problème, j’ai comme message d’erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 If MSHFlexGrid1.RowIsVisible(IdxRech(IdxRec).Xlgn) = False Then 'MSHFlexGrid1.RowIsVisible(IdxRech(IdxRec).Xlgn) = True 'MSHFlexGrid1.RowIsVisible(IdxRech(IdxRec).Xcol) = True 'MSHFlexGrid1.RowIsVisible(2) = True End If
Pourtant il est bien écrit que l’on peut définir cette propriété.Erreur de compilation : Affectation à une constante non autorisée
Merci de vos éclairsissements.
Partager