Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
positionnement dans la cellule. Du coup, les propriétés
contiennent pas la position courante de la cellule. Pour
propose de déterminer la cellule courante à partir des
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
droite et du haut vers le bas, en ajoutant la largeur de
parcourrue jusqu'à ce que les positions x et y soient
Une fois la cellule déterminée, on va se positionner
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
firedCols). Si vous devez les exploiter, il faut penser à
code.
Bons tests,
Frédéric Puteaux.
"JCM" a écrit dans le
3d8901c49fe8$99962700$
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
positionnement dans la cellule. Du coup, les propriétés
contiennent pas la position courante de la cellule. Pour
propose de déterminer la cellule courante à partir des
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
droite et du haut vers le bas, en ajoutant la largeur de
parcourrue jusqu'à ce que les positions x et y soient
Une fois la cellule déterminée, on va se positionner
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
firedCols). Si vous devez les exploiter, il faut penser à
code.
Bons tests,
Frédéric Puteaux.
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le
3d8901c49fe8$99962700$a301280a@phx.gbl...
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
positionnement dans la cellule. Du coup, les propriétés
contiennent pas la position courante de la cellule. Pour
propose de déterminer la cellule courante à partir des
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
droite et du haut vers le bas, en ajoutant la largeur de
parcourrue jusqu'à ce que les positions x et y soient
Une fois la cellule déterminée, on va se positionner
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
firedCols). Si vous devez les exploiter, il faut penser à
code.
Bons tests,
Frédéric Puteaux.
"JCM" a écrit dans le
3d8901c49fe8$99962700$
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
positionnement dans la cellule. Du coup, les propriétés
contiennent pas la position courante de la cellule. Pour
propose de déterminer la cellule courante à partir des
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
droite et du haut vers le bas, en ajoutant la largeur de
parcourrue jusqu'à ce que les positions x et y soient
Une fois la cellule déterminée, on va se positionner
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
firedCols). Si vous devez les exploiter, il faut penser à
code.
Bons tests,
Frédéric Puteaux.
"JCM" a écrit dans le
3d8901c49fe8$99962700$
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
positionnement dans la cellule. Du coup, les propriétés
contiennent pas la position courante de la cellule. Pour
propose de déterminer la cellule courante à partir des
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
droite et du haut vers le bas, en ajoutant la largeur de
parcourrue jusqu'à ce que les positions x et y soient
Une fois la cellule déterminée, on va se positionner
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
firedCols). Si vous devez les exploiter, il faut penser à
code.
Bons tests,
Frédéric Puteaux.
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le
3d8901c49fe8$99962700$a301280a@phx.gbl...
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
positionnement dans la cellule. Du coup, les propriétés
contiennent pas la position courante de la cellule. Pour
propose de déterminer la cellule courante à partir des
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
droite et du haut vers le bas, en ajoutant la largeur de
parcourrue jusqu'à ce que les positions x et y soient
Une fois la cellule déterminée, on va se positionner
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
firedCols). Si vous devez les exploiter, il faut penser à
code.
Bons tests,
Frédéric Puteaux.
"JCM" a écrit dans le
3d8901c49fe8$99962700$
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
-----Message d'origine-----
Bonsoir,
Ajoutez simplement l'appel à la fonction SetFocus après
cellule, soit :
...
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
.SetFocus
La main sera donnée au contrôle msFlexGrid et la cellule
sélectionnée...
Frédéric Puteaux.
"JCM" a écrit dans le
088101c4a091$242cbbb0$
Bonjour
et merci pour vos réponses qui m'ont été d'un grand
secours car cela fonctionne.
Néanmoins je voudrais que la cellule sélectionnée soit
entouré d'un encadrement pointillé (comme une sélection)
et cela je n'y arrive pas, je ne trouve pas le bon code
Merci pour votre réponse
Cordialement
JCM-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
souris ne force pas lepositionnement dans la cellule. Du coup, les propriétés
Col et Row necontiennent pas la position courante de la cellule. Pour
ce faire, je vouspropose de déterminer la cellule courante à partir des
coordonnées fournies,x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
gauche vers ladroite et du haut vers le bas, en ajoutant la largeur de
chaque celluleparcourrue jusqu'à ce que les positions x et y soient
atteintes.
Une fois la cellule déterminée, on va se positionner
dessus en forçant lespropriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
As Integer, x AsSingle, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
partir de laposition X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
partir de la positionY fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
cellule et on lacolorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
(fixedRows etfiredCols). Si vous devez les exploiter, il faut penser à
mettre à jour cecode.
Bons tests,
Frédéric Puteaux.
"JCM" a écrit dans le
message de news:3d8901c49fe8$99962700$
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
.
-----Message d'origine-----
Bonsoir,
Ajoutez simplement l'appel à la fonction SetFocus après
cellule, soit :
...
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
.SetFocus
La main sera donnée au contrôle msFlexGrid et la cellule
sélectionnée...
Frédéric Puteaux.
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le
088101c4a091$242cbbb0$a401280a@phx.gbl...
Bonjour
et merci pour vos réponses qui m'ont été d'un grand
secours car cela fonctionne.
Néanmoins je voudrais que la cellule sélectionnée soit
entouré d'un encadrement pointillé (comme une sélection)
et cela je n'y arrive pas, je ne trouve pas le bon code
Merci pour votre réponse
Cordialement
JCM
-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
souris ne force pas le
positionnement dans la cellule. Du coup, les propriétés
Col et Row ne
contiennent pas la position courante de la cellule. Pour
ce faire, je vous
propose de déterminer la cellule courante à partir des
coordonnées fournies,
x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
gauche vers la
droite et du haut vers le bas, en ajoutant la largeur de
chaque cellule
parcourrue jusqu'à ce que les positions x et y soient
atteintes.
Une fois la cellule déterminée, on va se positionner
dessus en forçant les
propriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
As Integer, x As
Single, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
partir de la
position X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
partir de la position
Y fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
cellule et on la
colorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
(fixedRows et
firedCols). Si vous devez les exploiter, il faut penser à
mettre à jour ce
code.
Bons tests,
Frédéric Puteaux.
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le
message de news:
3d8901c49fe8$99962700$a301280a@phx.gbl...
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
.
-----Message d'origine-----
Bonsoir,
Ajoutez simplement l'appel à la fonction SetFocus après
cellule, soit :
...
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
.SetFocus
La main sera donnée au contrôle msFlexGrid et la cellule
sélectionnée...
Frédéric Puteaux.
"JCM" a écrit dans le
088101c4a091$242cbbb0$
Bonjour
et merci pour vos réponses qui m'ont été d'un grand
secours car cela fonctionne.
Néanmoins je voudrais que la cellule sélectionnée soit
entouré d'un encadrement pointillé (comme une sélection)
et cela je n'y arrive pas, je ne trouve pas le bon code
Merci pour votre réponse
Cordialement
JCM-----Message d'origine-----
Bonsoir,
Le problème est lié au fait que le click droit de la
souris ne force pas lepositionnement dans la cellule. Du coup, les propriétés
Col et Row necontiennent pas la position courante de la cellule. Pour
ce faire, je vouspropose de déterminer la cellule courante à partir des
coordonnées fournies,x et y, tout comme le dit Christophe Pasde.
Pour commencer, on va balayer toutes les cellules, de la
gauche vers ladroite et du haut vers le bas, en ajoutant la largeur de
chaque celluleparcourrue jusqu'à ce que les positions x et y soient
atteintes.
Une fois la cellule déterminée, on va se positionner
dessus en forçant lespropriétés col et row.
Après, il ne reste qu'à remplir la cellule...
Voici un exemple d'intégration :
Private Sub Form_Load()
With MSFlexGrid1
.Cols = 10
.Rows = 10
.FixedRows = 0
.FixedCols = 0
.SelectionMode = flexSelectionFree
End With
End Sub
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift
As Integer, x AsSingle, y As Single)
Dim X1 As Integer
Dim Y1 As Integer
Dim X2 As Integer
Dim Y2 As Integer
Dim XCol As Integer
Dim YCol As Integer
If Button = vbRightButton Then
With MSFlexGrid1
X1 = .LeftCol
Y1 = .TopRow
X2 = 0
Y2 = 0
'
' --- On détermine la position horizontale à
partir de laposition X fournie
'
Do
If X2 + .ColWidth(X1) > x Then
XCol = X1
Exit Do
End If
X2 = X2 + .ColWidth(X1)
X1 = X1 + 1
Loop
'
' --- On détermine la position verticale à
partir de la positionY fournie
'
Do
If Y2 + .RowHeight(Y1) > y Then
YRow = Y1
Exit Do
End If
Y2 = Y2 + .RowHeight(Y1)
Y1 = Y1 + 1
Loop
'
' --- Ensuite, on se positionne sur la
cellule et on lacolorie...
'
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
End With
End If
End Sub
Attention : ce code ne supporte pas les entêtes fixes.
(fixedRows etfiredCols). Si vous devez les exploiter, il faut penser à
mettre à jour cecode.
Bons tests,
Frédéric Puteaux.
"JCM" a écrit dans le
message de news:3d8901c49fe8$99962700$
Bonjour à tous
Quand je fais un click droit souris sur une cellulle d'un
MSFlexgrid, je veux changer la couleur de celle-ci.
Avec le code ci-dessous les coordonnées de la cellulle ne
sont celles ou j'ai clické, Pouvez-vous me dire ou est le
problème
Private Sub FGPlanning_MouseDown(Button As Integer, Shift
As Integer, x As Single, Y As Single)
If Button And vbRightButton Then ' c'est le clic droit
FGPlanning.Row = FGPlanning.RowSel
FGPlanning.col = FGPlanning.ColSel
FGPlanning.CellBackColor = &HFFFFFF
FGPlanning.Text = ""
End If
End Sub
Merci de vos réponses
Cordialement
JCM
.
.