paul_tsekov
asked on
URGENT : Toolbar Dropping-Down
Hello friends,
I have a Toolbar control with several buttons on it. These buttons have the tbrDropdown style.
So in the right part ot each button I have a DOWN arrow, and when I click on this arrow , a ButtonMenu drops down with a choice of several menu items. I want this drop-down operation to happen when I click even on the button itself (button's left part).
Anybody know some API function or some way of doing this??
Thank you for reading my question.
Pavel Tsekov
I have a Toolbar control with several buttons on it. These buttons have the tbrDropdown style.
So in the right part ot each button I have a DOWN arrow, and when I click on this arrow , a ButtonMenu drops down with a choice of several menu items. I want this drop-down operation to happen when I click even on the button itself (button's left part).
Anybody know some API function or some way of doing this??
Thank you for reading my question.
Pavel Tsekov
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
...position of the mouse pointer.... (correction)
suat
suat
Interesting...
More interesting thing is the question's title: URGENT
:)
suat
:)
suat
ASKER
Thank you man, you are a real genius. Superb performance by you. Incredible. Thank you again
Thank you Pavel.
I had the same question now, so I searched it first and used this answer.
First, nice solution.
Second, does this line :
retval = SetCursorPos(coord.x - Me.Point(Toolbar1.Left, Toolbar1.Top), coord.y)
has an explanation, or is it a harmless bug like it looks like ?
Me.Point(Toolbar1.Left, Toolbar1.Top) returns the RGB of the point, and always returns -1 for the toolbar, so what it really does is moving the cursor one step to the right, calling to toolbar_click event again and again, until it reaches the zone of the dropdown menu, there is stops.
So the above line should actually be replaced with :
SetCursorPos coord.x + 1, coord.y
and it will still achieve the same effect.
First, nice solution.
Second, does this line :
retval = SetCursorPos(coord.x - Me.Point(Toolbar1.Left, Toolbar1.Top), coord.y)
has an explanation, or is it a harmless bug like it looks like ?
Me.Point(Toolbar1.Left, Toolbar1.Top) returns the RGB of the point, and always returns -1 for the toolbar, so what it really does is moving the cursor one step to the right, calling to toolbar_click event again and again, until it reaches the zone of the dropdown menu, there is stops.
So the above line should actually be replaced with :
SetCursorPos coord.x + 1, coord.y
and it will still achieve the same effect.
It is the way that i shown the (-1) in code :)
By the way, nahumd is right and i am not sure why i did that bug. Interesting thing coord+1 moves the pointer onto drop down arrow. And that little bug gives the code some mystery. :)
Yes, i agree with you nahumd with one exception word:
So the above line "CAN" be replaced with :
SetCursorPos coord.x + 1, coord.y
and this one much better :)
Thanks for warning us nahumd.
And Happy New Year everybody...
regards
suat
By the way, nahumd is right and i am not sure why i did that bug. Interesting thing coord+1 moves the pointer onto drop down arrow. And that little bug gives the code some mystery. :)
Yes, i agree with you nahumd with one exception word:
So the above line "CAN" be replaced with :
SetCursorPos coord.x + 1, coord.y
and this one much better :)
Thanks for warning us nahumd.
And Happy New Year everybody...
regards
suat
' Form1, add toolbar, menu mnuPop (visible=false), add one submenu
Option Explicit
Private Sub Toolbar1_ButtonClick(ByVal
MyButtonMenu Button
End Sub
Private Sub Toolbar1_ButtonDropDown(By
MyButtonMenu Button
End Sub
Private Sub MyButtonMenu(ByVal Button As MSComctlLib.Button)
PopupMenu mnuPop, , Button.Left, Button.Top + Button.Height
End Sub