OVH Cloud OVH Cloud

pb MSFlexGrid

4 réponses
Avatar
JCM
Bonjour =E0 tous

voici mon probl=E8me :

avec un clik sur n'importe quelle cellulle situ=E9e sur la=20
row=3D4 d'un MSFlexgid je change la couleur de la cellulle=20
Col=3D0 Row=3D4, cela c'est OK

Si clik ensuite sur la ligne 8 je voudrais que la cellulle=20
Col=3D0 Row=3D4 reprenne sa couleur d'origine

Et cela je ne vois pas comment faire
Merci de vos r=E9ponses
Cordialement
JCM

4 réponses

Avatar
Jean-Marc
"JCM" a écrit dans le message de
news:075f01c49c97$b54eeda0$
Bonjour à tous



voici mon problème :



avec un clik sur n'importe quelle cellulle située sur la
row=4 d'un MSFlexgid je change la couleur de la cellulle
Col=0 Row=4, cela c'est OK



Si clik ensuite sur la ligne 8 je voudrais que la cellulle
Col=0 Row=4 reprenne sa couleur d'origine



Et cela je ne vois pas comment faire



Hello,

le mécanisme général, c'est que à chauqe "Clic", tu dois sauver un état.
Ici, tu dois sauver 2 variables, Col et Row;
Tu dois te créer 2 variables (oldCol et OldRow, par exemple), de préférence
des statiques dans ton évènement clic et faire quelques chose comme ça:

1/ restaure couleur position (OldCol, OldRow)
2/ met en couleur position courante: Col et Row
3/ OldCOl = Col , OldRow=Row (pour la prochaine fois)

Et voila!

--
Jean-marc
Avatar
Jean-Marc
"Jean-Marc" a écrit dans le message de
news:414ab00f$0$4205$
1/ restaure couleur position (OldCol, OldRow)
2/ met en couleur position courante: Col et Row
3/ OldCOl = Col , OldRow=Row (pour la prochaine fois)




Voici un tout petit bout de code qui fait exactement ce que tu veux:
1/ créer une form avec un groupe de 3 pictureBox (Picture1(0), Picture1(1),
Picture1(2) )
2/ mettre ce code:

Private Sub Picture1_Click(Index As Integer)
Static oldIndex As Integer
' rappel : les static boolennes valent FALSE à l'initialisation
Static dejaInit As Boolean

If dejaInit Then
Picture1(oldIndex).BackColor = RGB(255, 255, 255)
Else
dejaInit = True
End If
Picture1(Index).BackColor = RGB(255, 0, 0)
oldIndex = Index
End Sub

La variable static DejaInit te protège la toute premiere fois que ce code
est appelé (dans ce cas, il n'y a pas encore besoin de restaurer un état
précédent).

--
Jean-marc
Avatar
JCM
Bonjour Jean Marc

Merci pour ton code, j'ai essayé de l'adapter à mon appli
et cela ne fonctionne pas

Static dejaInit As Boolean
Dim NewRow As Integer
Dim OldRow As Integer
'ligne sélectionnée
NewRow = FGPlanning.RowSel

'change la couleur pour la ligne sélectionnée
If dejaInit Then
FGPlanning.col = 0
FGPlanning.Row = OldRow
FGPlanning.CellBackColor = &H8000000F ' gris
Else
dejaInit = True
End If
FGPlanning.col = 0
FGPlanning.Row = NewRow
FGPlanning.CellBackColor = &HFF& 'rouge
OldRow = NewRow

En fait, je veux au click souris mettre la cellule de la
colonne 0 et la ligne RowCel en rouge, au click sur une
autre ligne je veux qu'elle redevienne grise

je ne vois pas ou est l'erreur
Merci pour ta réponse
cordialement
JCM
-----Message d'origine-----
"Jean-Marc" a écrit dans le


message de
news:414ab00f$0$4205$
1/ restaure couleur position (OldCol, OldRow)
2/ met en couleur position courante: Col et Row
3/ OldCOl = Col , OldRow=Row (pour la prochaine fois)




Voici un tout petit bout de code qui fait exactement ce


que tu veux:
1/ créer une form avec un groupe de 3 pictureBox (Picture1


(0), Picture1(1),
Picture1(2) )
2/ mettre ce code:

Private Sub Picture1_Click(Index As Integer)
Static oldIndex As Integer
' rappel : les static boolennes valent FALSE à


l'initialisation
Static dejaInit As Boolean

If dejaInit Then
Picture1(oldIndex).BackColor = RGB(255, 255, 255)
Else
dejaInit = True
End If
Picture1(Index).BackColor = RGB(255, 0, 0)
oldIndex = Index
End Sub

La variable static DejaInit te protège la toute premiere


fois que ce code
est appelé (dans ce cas, il n'y a pas encore besoin de


restaurer un état
précédent).

--
Jean-marc


.



Avatar
Jean-Marc
"JCM" a écrit dans le message de
news:366f01c49edc$baf07110$
Bonjour Jean Marc



Hello,

Merci pour ton code, j'ai essayé de l'adapter à mon appli
et cela ne fonctionne pas



Static dejaInit As Boolean
Dim NewRow As Integer
Dim OldRow As Integer



STOP!!!! Voila l'erreur :-))

Tu as oublié de mettre OldRow en STATIC:

Static OldRow As Integer

Sinon tu perds la valuer de OldRow entre 2 appels.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."