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 :

Utiliser deux couleurs de fond dans un MSFLEXGRID


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 29
    Points
    29
    Par défaut Utiliser deux couleurs de fond dans un MSFLEXGRID

    Je travail avec Visual basic . Je cherche à savoir s'il y a une possibilité pour colorer une ligne sur deux de MSFLEXGRID . Et merci .

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    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 112
    Points : 16 645
    Points
    16 645
    Par défaut
    MSFLEXGRId ,je ne me souviens pas mais pour un MSHFlexGrid
    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
    20
    21
    22
    23
    24
    25
    26
    Private Sub Form_Load()
    Dim T As Integer, U As Integer
    MSFlexGrid1.Cols = 2
    MSFlexGrid1.Width = 1600
    MSFlexGrid1.ColWidth(0) = 600
    MSFlexGrid1.ColWidth(1) = 600
    MSFlexGrid1.Rows = 25
    MSFlexGrid1.Col = 0
    For T = 0 To MSFlexGrid1.Rows - 1
     MSFlexGrid1.Row = T
     For U = 0 To 1
      MSFlexGrid1.Col = U
      If CInt(T / 2) <> Abs(T / 2) Then
       MSFlexGrid1.CellBackColor = &H80000013  'gris
       MSFlexGrid1.CellForeColor = &H80000011  'blanc
       MSFlexGrid1.TextMatrix(T, U) = "grisée"
       Else
       MSFlexGrid1.CellBackColor = &HFFFFFF 'blanc
       MSFlexGrid1.CellForeColor = &H0&  'noir
       MSFlexGrid1.TextMatrix(T, U) = "normal"
      End If
     Next U
    Next T
    MSFlexGrid1.Row = 0
    MSFlexGrid1.RowSel = 0
    End Sub
    Motif de l'edit
    sa fonctionne aussi avec le MSFLEXGRId, j'ai changé le code

  3. #3
    Membre habitué Avatar de GodGives
    Inscrit en
    Août 2007
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2007
    Messages : 456
    Points : 161
    Points
    161
    Par défaut
    A mon humble avis, le code que ProgElecT t'a envoyé est parfait. il est bien valable pour les MSFlexgrid comme pour les MSHFlexgrid!

    Je pense que pour l'instant, c'est la méthode adoptée!

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Ce code est testé et il fonctionne. Le FlexGrid du test avait avait des entêtes de lignes et de colonnes (FixedCols et FixedRows), plus dix autres colonnes et une centaine de lignes. (Cols = 11 et Rows = 101).
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Form_Load()
        Dim r As Integer, c As Integer
        Dim couleur As Long
        With MSFlexGrid1
            ' Ajuste la largeur des entêtes de lignes (colonne 0)
            .ColWidth(0) = .ColWidth(0) / 2
            For r = 0 To .Rows - 1
                ' Affiche l'entête de ligne et ajuste l'alignement du texte
                If r > 0 Then
                    .TextMatrix(r, 0) = r
                    .Row = r
                    .Col = 0
                    .CellAlignment = flexAlignCenterCenter
                End If
                For c = 0 To .Cols - 1
                    ' Affiche l'entête de colonne
                    ' et ajuste l'alignement du texte
                    If (r = 0) And (c > 0) Then
                        .TextMatrix(r, c) = Chr(c + 65)
                        .Row = 0
                        .Col = c
                        .CellAlignment = flexAlignCenterCenter
                    End If
                    ' Colore le fond des cellules selon que
                    ' le numéro de ligne est pair ou impair
                    couleur = IIf(r Mod 2 = 0, &H8000000F, &H80000005)
                    If (r > 0) And (c > 0) Then
                        .Row = r
                        .Col = c
                        .CellBackColor = couleur
                    End If
                Next
            Next
        End With
    End Sub
    Je tiens à signaler que pour affecter une quelconque valeur à toutes les propriétés dont le nom commencent par Cell (comme CellBackColor ou CellAlignment), il faut impérativement déterminer d'abord l'adresse de la cellule en affectant une valeur aux propriétés Col et Row.

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Une petite variante, pour ceux que ça amusera...
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub Form_Load()
        Dim r As Integer, c As Integer
        Dim couleur As Long
        With MSFlexGrid1
            ' Ajuste la largeur des entêtes de lignes (colonne 0)
            .ColWidth(0) = .ColWidth(0) / 2
            For r = 0 To .Rows - 1
                For c = 0 To .Cols - 1
                    ' Affiche l'entête de ligne et ajuste l'alignement du texte
                    If (r > 0) And (c = 0) Then
                        .TextMatrix(r, c) = r
                        .Row = r
                        .Col = c
                        .CellAlignment = flexAlignCenterCenter
                        .CellTextStyle = flexTextInset
                        .CellForeColor = vbButtonText
                    End If
                    ' Affiche l'entête de colonne
                    ' et ajuste l'alignement du texte
                    If (r = 0) And (c > 0) Then
                        .TextMatrix(r, c) = Chr(c + 65)
                        .Row = r
                        .Col = c
                        .CellAlignment = flexAlignCenterCenter
                        .CellTextStyle = flexTextInset
                        .CellForeColor = vbButtonText
                    End If
                    ' Colore le fond des cellules selon que
                    ' le numéro de ligne est pair ou impair
                    couleur = IIf(r Mod 2 = 0, vbButtonFace, vbWindowBackground)
                    If (r > 0) And (c > 0) Then
                        .Row = r
                        .Col = c
                        .CellBackColor = couleur
                    End If
                Next
            Next
            ' Sélectionne la première cellule
            .Col = 1
            .Row = 1
        End With
    End Sub
    J'y ai mis des constantes nommées de couleurs système, c'est plus explicite que les valeurs hexadécimales. J'ai aussi ajouté quelques propriétés commençant par Cell... Juste pour montrer l'effet. J'en ai profité pour déplacer le code des entêtes de ligne à l'intérieur de la deuxième boucle.

    Amusez-vous bien! et bonne journée! ou fin de journée, selon l'endroit où vous habitez sur la planète...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    Merci à tous ça marche très bien

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

Discussions similaires

  1. utiliser deux couleurs dans un formulaire
    Par radahm dans le forum IHM
    Réponses: 1
    Dernier message: 05/03/2009, 13h11
  2. Réponses: 4
    Dernier message: 11/01/2008, 11h00
  3. [C# 2.0] Couleur de fond dans une listView
    Par OtI$ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/02/2007, 15h50
  4. Couleur de fond dans une zone de liste
    Par kornkiller dans le forum Access
    Réponses: 1
    Dernier message: 08/08/2006, 21h50
  5. couleur de fond dans un fieldset
    Par mikees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/06/2006, 13h02

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