Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VB 6 et antérieur
VB 6 et antérieur Visual basic 6 et versions antérieures. Avant de poster -> La FAQ VB6, Les tutoriels VB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 12h17   #1
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 198
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 198
Points : 5 110
Points : 5 110
Envoyer un message via MSN à ProgElecT
Par défaut Comment manipuler RowIsVisible dans un MSHFlexGrid

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.
Code :
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
En regardant l’aide MSDN de RowIsVisible il est indiqué :
Citation:
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 ?)
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.
Code :
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
Problème, j’ai comme message d’erreur
Citation:
Erreur de compilation : Affectation à une constante non autorisée
Pourtant il est bien écrit que l’on peut définir cette propriété.
Merci de vos éclairsissements.
ProgElecT est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 13h11   #2
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 198
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 198
Points : 5 110
Points : 5 110
Envoyer un message via MSN à ProgElecT
Cela faisait 3 jours que je cherchai
Bien que la question reste non solutionnée avec RowIsVisible, pour faire apparaître visible la ligne, on peut utiliser TopRow comme cela
Code :
1
2
3
4
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.
MSHFlexGrid1.TopRow = IdxRech(IdxRec).Xlgn
ProgElecT est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h34.


 
 
 
 
Partenaires

Hébergement Web