+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 508
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 508
    Points : 6 413
    Points
    6 413

    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é :
    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
    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.

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 508
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 508
    Points : 6 413
    Points
    6 413

    Par défaut

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •