+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Tasto Destro su Combobox

  1. #1
    Sonnyland non è in linea Scolaretto
    Ho bisogno di far apparire un menu o di generare un evento tramite la pressione del tasto destro su una combo.

    Come posso fare ???
    ℹ️ Leggi di più su Sonnyland ...

  2. #2
    L'avatar di _gas
    _gas non è in linea Scribacchino
    Non è una cosa semplice (se è come credo io), ma scusa la curiosità, a cosa ti serve? Cioè, ti aspetti il click destro quando la combo è chiusa o aperta con la lista? Se è la seconda potresti sfruttare il doppio click per non ricorrere a soluzioni troppo complesse...
    ℹ️ Leggi di più su _gas ...

  3. #3
    L'avatar di chico_
    chico_ non è in linea Topo di biblioteca Ultimo blog: Attacco a Oscommerce
    Purtroppo la combo "classica" non dispone dell'evento "mouseup" necessario per fare cio' che chiedi.
    Due soluzioni possibili:
    Soluzione 1:
    Metti sopra la tua Combo una TextBox (avendo cura di modificarne il contenuto in base alla scelta effettuata nella combo). La textbox prevede l'evento MouseUp quindi puoi gestire i menu a tendina.
    Soluzione 2 :
    Utilizzi la ComboBox del componente "Microsoft Forms 2.0 Object Library" la quale supporta l'evento MouseUp (tieni comunque in considerazione che gli oggetti della Forms 2.0 sono meno affidabili di quelli standard, pur essendo piu' completi).

    In entrambi i casi, per gestire il menu Popup puoi fare riferimento a questa discussione:

    http://forum.masterdrive.it/showthre...t=11195&page=2

    Ciauz

    Chico
    ℹ️ Leggi di più su chico_ ...

  4. #4
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Ciao. Ho preparato un piccolo esempio prendendo spunto da qui:
    http://cuinl.tripod.com/Tips/controls3.htm
    Il codice di esempio si riferiva soltanto alle combo con Style impostata su 2 - DropdownList, così ho fatto una piccola modifica per farlo funzionare con Style impostato su 0 - DropdownCombo.
    Non chiudere il programma tramite il pulsante End di VB, e leggi tutte le istruzioni sul sito prima di copiancollare il codice, altrimenti VB va in crash.

    In un modulo metti le seguenti dichiarazioni:
    Option Explicit
    
    ' Address of the original Windows procedure
    Private g_lngOldWindowProc As Long
    
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
        (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal _
        wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
        (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
        (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
        (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    
    Private Const WM_LBUTTONDOWN = &H201 'left mouse button is down
    Private Const WM_LBUTTONDBLCLK = &H203 'left mouse button is double clicked
    Private Const WM_RBUTTONDOWN = &H204 'right mouse button is down
    Private Const WM_RBUTTONDBLCLK = &H206 'right mouse button is double clicked
    Private Const WM_MBUTTONDOWN = &H207 'middle mouse button is down
    Private Const WM_MBUTTONDBLCLK = &H209 'middle mouse button is double clicked
    
    Private Const GWL_WNDPROC = (-4)
    
    Public Function NewWindowProc(ByVal hwnd As Long, ByVal Msg As Long, _
      ByVal wParam As Long, ByVal lParam As Long) As Long
    ' New message-handler
    ' This is the function that will receive all the Windows messages
    ' when subclassing is activated
    On Error Resume Next
        Select Case Msg
    ' here you can add more events, using the constants above.
    ' Message when the left mouse button is down
        Case WM_LBUTTONDOWN
    ' place here the code of the mouse left button down event.
            MsgBox "the left mouse button is down"
            NewWindowProc = True
    ' Message when the right mouse button is down
        Case WM_RBUTTONDOWN
            MsgBox "the right mouse button is down"
            NewWindowProc = True
    ' All other messages
            Case Else
    ' Let the default message-handler take care of this message!
            NewWindowProc = CallWindowProc(g_lngOldWindowProc, hwnd, _
              Msg, wParam, lParam)
        End Select
    End Function
    
    Public Sub StartSubclassing(hwnd As Long)
    ' Start subclassing by redirecting all messages to NewWindowProc function
    ' and storing the address of original message-handler in
    ' OldWindowProc variable
        g_lngOldWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf NewWindowProc)
    End Sub
    
    Public Sub EndSubclassing(hwnd As Long)
        Dim lngRetVal As Long
    ' Restore the original message-handler.
        lngRetVal = SetWindowLong(hwnd, GWL_WNDPROC, g_lngOldWindowProc)
    End Sub
    
    Poi, in una form, metti una combo chiamata Combo1 con Style = 0 - DropdownCombo e un pulsante per chiudere la Form, e incolla il seguente codice:
    Option Explicit
    
    Dim editHWnd As Long, style As Long
    
    Private Sub Command1_Click()
        Unload Me
    End Sub
    
    Private Sub Form_Load()
        Dim i As Long
        For i = 0 To 11
            Combo1.AddItem MonthName(i + 1)
            Combo1.ItemData(Combo1.NewIndex) = i + 1
        Next i
        Combo1.ListIndex = 0
        editHWnd = FindWindowEx(Combo1.hwnd, 0&, vbNullString, vbNullString)
        StartSubclassing editHWnd
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        EndSubclassing editHWnd
    End Sub
    
    Spero ti sia utile. Ciao.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Menù tasto destro
    Da uccio nel forum Visual Basic 6
    Risposte: 8
    Ultimo Post: 16-12-2008, 10:23
  2. [VB5]: Elementi con il Tasto destro...
    Da vrclaudio nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 26-07-2007, 21:29
  3. Tasto destro mouse
    Da nioMatrix nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 04-06-2005, 10:05
  4. help information e tasto destro mouse
    Da ferrari nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 27-10-2004, 16:50
  5. Tasto destro
    Da andromeda nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 15-10-2004, 19:02