PB click droit souris
Le
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
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

Poser une question


Pas bien l'habitude avec les MSqqchose, mais logiquement le X et Y que
tu récupère sont :
"Nombre qui spécifie la position en cours du pointeur de la souris. Les
valeurs x et y sont toujours exprimées en fonction du système de
coordonnées défini par les propriétés ScaleHeight, ScaleWidth, ScaleLeft
et ScaleTop de l'objet."
a toi de voir s'il existe une correspondance entre ça et les cellules
Christophe
JCM a écrit :
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" 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
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
souris ne force pas le
Col et Row ne
ce faire, je vous
coordonnées fournies,
gauche vers la
chaque cellule
atteintes.
dessus en forçant les
As Integer, x As
partir de la
partir de la position
cellule et on la
(fixedRows et
mettre à jour ce
message de news:
Ajoutez simplement l'appel à la fonction SetFocus après le coloriage de la
cellule, soit :
...
.Col = XCol
.Row = YRow
.CellBackColor = RGB(255, 0, 0)
.SetFocus
La main sera donnée au contrôle msFlexGrid et la cellule sera alors
sélectionnée...
Frédéric Puteaux.
"JCM" 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
souris ne force pas le
Col et Row ne
ce faire, je vous
coordonnées fournies,
gauche vers la
chaque cellule
atteintes.
dessus en forçant les
As Integer, x As
partir de la
partir de la position
cellule et on la
(fixedRows et
mettre à jour ce
message de news:
Merci pour votre aide, tout est OK
Cordialement
JCM
le coloriage de la
sera alors
message de news: