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)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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]" <alexispierre@hotmail.com> a écrit dans le
message de news:uulxsZWbEHA.2816@TK2MSFTNGP11.phx.gbl
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
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