OVH Cloud OVH Cloud

BARRE OUTILS

2 réponses
Avatar
lou
bonjour
dans access 2000
j'ai une barre outils personalise qui s'appelle "SD"
je la fait apparaitre en cliquant sur le coté droit de la souris

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
Y As Single)


If Button = 2 Then

Application.CommandBars("SD").Visible = True
End If
End Sub


jusque la c'est impec
le probleme c'est quelle se fige sur le formulaire a une plce fixe
j'aimerais qu'elle aparaisse a l'endroit du formulaire ou je clic avec la
souris(en fait quelle suive le pointeur de la souris)

comment faire?

MERCI POUR VOTRE AIDE

2 réponses

Avatar
Pierre Alexis [MVP]
Salut,

Tu as écrit :

le probleme c'est quelle se fige sur le formulaire a une plce fixe
j'aimerais qu'elle aparaisse a l'endroit du formulaire ou je clic avec la
souris(en fait quelle suive le pointeur de la souris)



Application.CommandBars("SD").Left = X
Application.CommandBars("SD").Top = Y
Application.CommandBars("SD").Visible = True

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
Y As Single)

If Button = 2 Then
Application.CommandBars("SD").Left = X
Application.CommandBars("SD").Top = Y
Application.CommandBars("SD").Visible = True
End If

End Sub

Non ?

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
François Picalausa
Hello,

Je crois que ce n'est pas si simple...

Je m'explique: les X et Y de l'événements sont donnés en relatif par rapport
au coin supérieur gauche de la zone client de la form. Il faut donc
commencer par convertir les coordonnées (en twips, pixels) si nécessaire et
ajouter à cela la position de la form (en twips) et la position relative de
la zone client (en pixels; utiliser Screen.TwipsPerPixelX et Y pour
convertir en twips) ...

Ca peut devenir un peu compliqué par rapport à une "simple" récupération de
la position du curseur à l'écran.

Tout cela en tenant compte de la route située à dix mètres, et à exprimer
dans le cadre de la relativité restreinte...


Private Type POINT
x As Long
y As Long
End Type

Private Declare Function GetCursorPos _
Lib "user32" _
( _
lpPoint As POINT _
) _
As Long

Private MyCmdBar As CommandBar
Private ExcelInstance As Excel.Application

Private Sub Form_Initialize()
Set ExcelInstance = New Excel.Application
ExcelInstance.Visible = True
Set MyCmdBar = ExcelInstance.CommandBars.Add("MyCommandBar",
temporary:=True)
MyCmdBar.Visible = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single,
y As Single)
If MyCmdBar.Position = msoBarFloating And (Button And vbRightButton)
Then
Dim CursorPos As POINT
GetCursorPos CursorPos
MyCmdBar.Left = CursorPos.x
MyCmdBar.Top = CursorPos.y
End If
End Sub

Private Sub Form_Terminate()
MyCmdBar.Delete
Set MyCmdBar = Nothing
Set ExcelInstance = Nothing
End Sub

Seul petit problème, la toolbar disparait quand on passe d'Excel à la form,
pas pratique pour voir la commandbar en action...

On peut le faire dans une userform mais il y a alors des problèmes de
diparition de la barre pour un splendide... rectangle blanc (du moins sous
Excel2003) dû au rafraichissement de la fenêtre...
Peut-être qu'intercepter la fenêtre de la commandbar par son hwnd et la
forcer à ne plus être rafraîchie?

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Pierre Alexis [MVP]" a écrit dans le
message de news:
le probleme c'est quelle se fige sur le formulaire a une plce fixe
j'aimerais qu'elle aparaisse a l'endroit du formulaire ou je clic
avec la souris(en fait quelle suive le pointeur de la souris)



Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)

If Button = 2 Then
Application.CommandBars("SD").Left = X
Application.CommandBars("SD").Top = Y
Application.CommandBars("SD").Visible = True
End If

End Sub