Visual Basic - Duda listbox

Life is soft - evento anual de software empresarial
 
Vista:

Duda listbox

Publicado por supervisual (2 intervenciones) el 25/08/2006 01:42:18
Hola a todos. ¿Existe alguna forma de poder seleccionar un elemento de un listbox con el botón izquierdo y el derecho, y además saber con cual de los dos se ha hecho la pulsación? He buscado por un monton de APIs y nada (pq supongo k para esto hay k tirar de API)...

Gracias mil por vuestro tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda listbox

Publicado por Ultra Putrefactus (14 intervenciones) el 26/08/2006 21:50:44
En un módulo
------------------------------------
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Public Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down
Public Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down
Public Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up
Public Const MOUSEEVENTF_WHEEL = &H800 ' wheel button rolled
Public Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move

Public Type POINTAPI
X As Long
Y As Long
End Type
--------------------------------------
Private RightClick As Boolean

Private Sub Form_Load()
For i = 1 To 100
List1.AddItem "Item " & i
Next i
End Sub

Private Sub List1_Click()
If RightClick Then
MsgBox "Botón Derecho"
RightClick = False
Else
MsgBox "Botón Izquierdo"
End If
End Sub

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

Dim pt As POINTAPI
GetCursorPos pt
cur_x = pt.X * 65535 / ScaleX(Screen.Width, vbTwips, vbPixels)
cur_y = pt.Y * 65535 / ScaleY(Screen.Height, vbTwips, vbPixels)
If Button = 2 Then
mouse_event _
MOUSEEVENTF_ABSOLUTE + _
MOUSEEVENTF_MOVE + _
MOUSEEVENTF_LEFTDOWN + _
MOUSEEVENTF_LEFTUP, _
cur_x, cur_y, 0, 0
RightClick = True
' MsgBox "Boton Derecho"
Else
' MsgBox "Boton Izquierdo"
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar