Couleur d'une row dans un FlexGrid

Résolu
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009 - 1 sept. 2004 à 15:42
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009 - 2 sept. 2004 à 18:40
Voilà j'aimerais savoir comment je pourrais faire pour que dans mon FlexGrid mes rows on des couleur différente.

Je m'explique la 1er devra être de couleur BLANCHE et la seconde d'une couleur verte et la 3éme de couleur blanche et la 4éme ...

Je sais que je dois crée une boucle pour sa, mais je sais pas encore faire de boucle.

Merci

15 réponses

Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 17:56
oui je parle des fixrox et fixcol ; elle doivent être considérées comme un colonne normale. Ainsi, si la première ligne (sonc la N°0) et un ligne fixée, ben la première case utilisable par l'utilisateur (par défaut blanche pour + clair), ben cette case sera en Row 1, Col 0 ... si tu me suis bien.

Bien sûr que ton code est bon. Mais on s'habitue rapidement à la flexgrid ; la première fois on ne sais pas où donner de la tête mais on comprend bien vite.
3
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
1 sept. 2004 à 16:13
ben en fait tu dois le faire case par case. Tu sélectioone la ligne 1, puis tu deplace a chaque fois la colonne et donc à chaque fois tu pourra choisir la couleur

Ligne 1 colonne1 - on met la couleur
Ligne 1 colonne2 - on met la couleur
etc

ah oui tu ne sais pas encore faire de boucles. mmmm ben tu dois abolument les apprendre avant. regarde donc sur vbfrance, il y a des sources et certainement des tutoriels

je peux t'assurer qu'une fois que tu manieras les boucles, la vie sera bien plus facile en matière de prog ;)
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
1 sept. 2004 à 21:07
Qq pour m'aider plus en détaille car je trouve rien ... ??
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
1 sept. 2004 à 21:24
dans la flexgird, tu place le "focus" sur une case en désignant sa ligne et sa colonne. Ainsi, pour changer la couleur de la case ligne 2 colonne 5, tu feras :

MSFG.Row = 2
MSFG.Col = 5
MSFG.BackColor = LaCouleur

Et Voilà alors pour changer la couleur de fond de toute la ligne 2, on va procédé comme suit. Aussi, il y a 6 colonnes.

Dim A As Integer
MSFG.Row = 2
For A = 1 To 6
MSFG.Col = A
MSFG.CellBackColor = &HFF&
Next A


ben normalement, la première ligne est la ligne 0 et c'est la même chose pour les lignes mais bon je vais pas compliquer pour ca. Bon ca t'explique ce que tu souhaites faire. D'abord on positionne sur la ligne 2, après quoi la boucle, là ou il y a A, va se boucler 6 fois et a prendra respectivement la valeur 1, puis 2, etc. Puis on positionne la colonne grace à la valeur de A. Ca va provoquer que la colonne va d'abord être sur 1, puis sur 2, etc. CellBackColor s'utilise pour modifie rla couleur de la cellule qui a le focus. Et à côté c l'identifiant du rouge
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
1 sept. 2004 à 21:25
merde au début d emon message j'ai mis BackColor mais c'est bien CellBackColor car BackColor modifie la couleur de toutes les cases et CellBackColor seulement de la case qui a le focus. Ca se voit dans le nom d'ailleurs ;)
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
1 sept. 2004 à 21:37
Merci pour ton message et de ton aide.

Je vais essayé ton code dés dans un petit instant.
Moi de mon coté j'essaye d'apprendre les boucles.

Pourrais tu me dire pk celle ci ne fonctionne pas (sa concerne la meme boucle que tu ma faite mais autrement) merci

While RowPos = DataBase_1.Rows
If RowColor = 1 Then
DataBase_1.Row = RowPos
DataBase_1.CellBackColor = "&H8000000F&"
RowColor = 2
Else
DataBase_1.Row = RowPos
DataBase_1.CellBackColor = "&H00000000&"
RowColor = 1
Wend
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
1 sept. 2004 à 21:44
apparemment y manque des trucs dedans. RowPos ne change jamais. Je vois aussi qu'il doit passer d'un RowColor 1 à 2 doc il va une fois mettre la couleur "&H8000000F&" puis l'autre et ainsi de suite. Mais on ne defini pas de colonne ni de ligne sur laquelle on doit se placer. CellBackColor ne saurais pas fonctionner. AH et il manque le End If aussi mais bon la boucle reste fausse quand même.
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
1 sept. 2004 à 22:01
C'est normal que quand je met par exemple

DataBase_1.Row = 0

Tout ce qu'il fait c'est une simple sélection, et non pas la sélection de la ligne sur la quelle je veut travaillé.

J'espere que je était claire, et désole du temps que tu perd à m'aider.
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
1 sept. 2004 à 22:09
.. ben non pas très clair... bon réexplique moi tout ce que tu veux, moi je vais pieuter, je reprendrai tout ca demain, trop tard pour réfléchir

PS: ca ne m'emmerde pas du tout de t'aider, car mois aussi il y en a qui passent parfois un tempsfous pour m'aider aloors.

@++

ah si je viens de comprendre lool oui d'ac je pige

bye
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
2 sept. 2004 à 00:15
il est minuit, je suis claqué. Voilà où j'en suis.

Dim RowColor
Dim RowPos
Dim ColPos

RowPos = 0
RowColor = 1
ColPos = 0

For RowPos = 0 To DataBase_1.Rows
DataBase_1.Row = RowPos
If RowColor = 1 Then
For ColPos = 0 To 4
DataBase_1.Col = ColPos
DataBase_1.CellBackColor = &H8000000F
RowColor = 2
Next

Else
For ColPos = 0 To 4
DataBase_1.Col = ColPos
DataBase_1.CellBackColor = &H0&
RowColor = 1
Next

End If
RowPos = RowPos + 1
Next

Je commence à maitrissé un peu les boucles maintenant, les problémes sont les suivant

1- au lieu de d'affecter une couleur pour les rows par multible de 2 il le fait par multiple de 4.

2- Si le nombre total de mes rows est paire, alors visualbasic génere une erreur.

Merci
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 11:36
pour ton problème n°2, il fait mettre :

For RowPos = 0 To DataBase_1.Rows - 1

Car la ligne n°1 porte le numero 0, c comme ca dans vb, on commence par 0.
pour le problème n°1, il ne faut pas mettre RowPos RowPos + 1 car dans la boucle For, l'incrémentation est automatique. Donc en mettant RowPos RowPos + 1, ca augmente de 1, ajouter à ca l'augmentation auto de For donc le problème est là.

enfin, pour la déclaration des 3 variables, tu dois spécifier leur type. Danc ce cas ci, étant donné que leur valeur ne sont pas décimales, tu choisirras Integer :

Dim RowColor As Integer
Dim RowPos As Integer
Dim ColPos As Integer

si tu ne spécifies rien, elle sont de type variant. Bon je vais pas te déballer le discours la-dessus, mais les performances du prog seront diminuées. Tu apprendras bien vite tout ca pour l'optimisation du code.
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
2 sept. 2004 à 15:24
Ben voilà encore merci de ton aide, juste un bete truc. Lors de mon chargement de ma base de donné sur mon FlexGrid. Mon flexgrid est remplie a partir de la deuxiéme ligne. Pourtant j'ai mis cette ligne de code juste avant le chargement de ma base de donnée :

DataBase_1.Row = 0
DataBase_1.Col = 0
0
Ze_Dam Messages postés 340 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 7 juillet 2005
2 sept. 2004 à 17:39
ouais avec ces lignes là tu positionnes sur la cas etout en haut à gauche. Note bien aussi qu'il y a les case "titres" mais elles sont considérées comme colonnes et lignes classiques
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
2 sept. 2004 à 17:48
Je suposse que tu parle de mes FixRow et FixCol, je les est supprimé via les propriétés de mon FlexGrid.

Donc mon code est bon ???
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
2 sept. 2004 à 18:40
Voila c'est bon, j'ai corrigé il y'avais une erreur dans mon code encore merci de ton aide.
0
Rejoignez-nous