Je travail avec Visual basic . Je cherche à savoir s'il y a une possibilité pour colorer une ligne sur deux de MSFLEXGRID . Et merci .
Je travail avec Visual basic . Je cherche à savoir s'il y a une possibilité pour colorer une ligne sur deux de MSFLEXGRID . Et merci .
MSFLEXGRId ,je ne me souviens pas mais pour un MSHFlexGrid
Motif de l'edit
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
sa fonctionne aussi avec le MSFLEXGRId, j'ai changé le code
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!
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).
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.
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
Une petite variante, pour ceux que ça amusera...
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.
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
Amusez-vous bien! et bonne journée! ou fin de journée, selon l'endroit où vous habitez sur la planète...
Merci à tous ça marche très bien
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager