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:41:55
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

Simular Pulsación

Publicado por Jasall (60 intervenciones) el 25/08/2006 16:37:25
Buenas, como bien dices se utiliza una Api ( mouse_event ) , te paso el codigo resuelto:
'
Private 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)
Const Iz_Apreta = &H2
Const Iz_Suelta = &H4

Private Sub Form_Load()
For i = 1 To 10
List1.AddItem "Registro - " & i
Next
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 2 Then
mouse_event Iz_Apreta, X, Y, 0, 0
mouse_event Iz_Suelta, X, Y, 0, 0
End If

End Sub
'
Saludos
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

RE:Simular Pulsación

Publicado por supervisual (2 intervenciones) el 26/08/2006 12:31:16
Un millón de gracias, Jasall, por lo k veo, eres muy bueno en esto, este tema me traia de cabeza desde hace tiempo. Sólo he encontrado un pekeño fallo k he conseguido arreglar, veras: si en el if Button = 2 then (es decir, en el if k compureba si se ha pulsado el botón derecho dentro del evento MouseDown del listbox) ponemos justo detras de las dos llamadas a mouse_event un, por ejemplo, PopupMenu, el código, al menos a mi, no me funciona. Para solucinarlo he hecho lo siguiente:

If Button = 2 Then
mouse_event Iz_Apreta, X, Y, 0, 0
mouse_event Iz_Suelta, X, Y, 0, 0
End If
DoEvents
If Button = 2 Then
PopupMenu mfff
End If

y funciona perfectamente, aunke supongo k se podrá hacer un uso mas eficiente de DoEvents. Esto es lo primero k se me ocurrió y funcionó.

De nuevo un millon de gracias. Por cierto, tambien estoy intentando hacer esto mismo en un treeview, o sea, poder hacer click en un nodo con el boton izq. y dcho. y ejecutar un determinado codigo u otro. Voy a intentar trasladar esta solución, a ver k pasa (probado, funciona).
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