IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Comment manipuler RowIsVisible dans un MSHFlexGrid


Sujet :

VB 6 et antérieur

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 182
    Points
    17 182
    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 : 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
    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 : 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
    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.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 182
    Points
    17 182
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/05/2011, 16h53
  2. Comment manipuler Speadsheet dans un Userform
    Par Nanty dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/04/2011, 19h06
  3. Réponses: 7
    Dernier message: 22/09/2008, 12h47
  4. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40
  5. Réponses: 2
    Dernier message: 15/10/2005, 18h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo