Evento click su pressione di un tasto

di il
16 risposte

Evento click su pressione di un tasto

Buonasera, forse mi sto perdendo in un bicchiere d'acqua, ma se avessi la necessità di lanciare una procedura sfruttando l' evento click, ma soltanto nel caso di pressione contemporanea dei tasti ctrl, shift o altro, come potrei fare?

16 Risposte

  • Re: Evento click su pressione di un tasto

    01/03/2025 - Antony73 ha scritto:

    lanciare una procedura sfruttando l' evento click

    01/03/2025 - Antony73 ha scritto:

    pressione contemporanea dei tasti ctrl, shift o altro,

    Per me sono due concetti diversi. O fai l'uno (semplice click sul pulsante che si trova sulla maschera (all'antica maniera)) o fai l'altro (combinazione tasti). Per quest'ultimo leggi qui
    Eseguire una macro di Access mediante tasti di scelta rapida - Supporto tecnico Microsoft

  • Re: Evento click su pressione di un tasto

    Si ma mi pare che il tasto sinistro del mouse non rientri tra i tasti di scelta rapida. O sbaglio?

  • Re: Evento click su pressione di un tasto

    Spiega bene cosa dici... l'evento Click è del button o di un controlo e a prescindere non può andare bene.

    Tu devi intercettare un evento di Tastiera(keypress o keydown o keyup) che restituiscono il tasto premuto e puoi anche intercettare Shift/Control con la mascheratura del parametro Shift.

    Oppure un MouseDown/MouseUp, stessa logica.

    Qui trovi tutto sul report ma è uguale su controlli 

    https://learn.microsoft.com/en-us/office/vba/api/access.report.keyup

  • Re: Evento click su pressione di un tasto

    Si tratta di un evento click di una listbox. Poiché è già prevista la chiamata ad una sub per il semplice evento click, vorrei generarne un altro dall' evento click su pressione contemporanea di ctrl o shift.

  • Re: Evento click su pressione di un tasto

    Non puoi, evita il SendKeys non è il caso.

  • Re: Evento click su pressione di un tasto

    02/03/2025 - @Alex ha scritto:

    evita il SendKeys

    Credo non ci sia questo pericolo.... Pure volendo non saprei come passare il click destro del mouse. Grazie.

  • Re: Evento click su pressione di un tasto

    Potresti provare a rilevare il tasto CTRL con l'API GetAsyncKeyState nell'evento Click.

    Se il tasto non viene rilevato, esegui le operazioni del normale click aòtrimenti quelle del ctrl-click

  • Re: Evento click su pressione di un tasto

    02/03/2025 - oregon ha scritto:

    Potresti provare a rilevare il tasto CTRL con l'API GetAsyncKeyState nell'evento Click.

    Se il tasto non viene rilevato, esegui le operazioni del normale click aòtrimenti quelle del ctrl-click

    Click non lo consente, ma MouseDown/MOuseUp del Button si come avevo accennato.

  • Re: Evento click su pressione di un tasto

    Metodo non realizzabile. Non mi resta che cambiare strategia. Grazie.

  • Re: Evento click su pressione di un tasto

    01/03/2025 - Antony73 ha scritto:

    Buonasera, forse mi sto perdendo in un bicchiere d'acqua, ma se avessi la necessità di lanciare una procedura sfruttando l' evento click, ma soltanto nel caso di pressione contemporanea dei tasti ctrl, shift o altro, come potrei fare?

    adesso non so bene con access ma il metodo puoi lanciarlo anche dal balcone all'occorrenza...

    quello che mi lascia perplesso è la frase

    01/03/2025 - Antony73 ha scritto:

    soltanto nel caso di pressione

    solo se premuto ctrl o alt o altro??? in questo caso a che ti serve il codice nell'evento click? lancia una funzione e basta (anche dal balcone se vuoi).

  • Re: Evento click su pressione di un tasto

    03/03/2025 - Antony73 ha scritto:

    Metodo non realizzabile. Non mi resta che cambiare strategia. Grazie.

    Io intendevo aggiungere in un modulo

    #If VBA7 Then
        #If Win64 Then
            Private Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As LongPtr) As LongPtr
        #Else
            Private Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
        #End If
    #Else
        Private Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
    #End If
    
    
    Function CtrlOk() As Boolean
        CtrlOk = GetAsyncKeyState(&H11&) And &H8000&
    End Function
    

    e nel tuo evento Click

        If CtrlOk Then
            MsgBox "Operazioni con CTRL attivato"
        Else
            MsgBox "Operazioni semplice click"
        End If
    
  • Re: Evento click su pressione di un tasto

    Non capisco il problema di usare l'evento MouseDown o MouseUp del Button caspita, è roba che dalla guida si evince in modo elementare...!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Mascheratura sul valore SHIFT con il valore della costante da testare.

    Private Sub TuoCommandButton_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim intCtrlDown     As Integer
    
        intCtrlDown = (Shift And Access.Constants.acCtrlMask) > 0
        If intCtrlDown And Button = Access.Constants.acLeftButton Then MsgBox "You pressed the CTRL key + MOUSELEFT."
    End Sub
  • Re: Evento click su pressione di un tasto

    Per me nessun problema @Alex, sicuramente il MouseUp è l'evento corretto.

    Era solo per spiegare all'OP, che vuole rinunciare, che può farlo e in tanti modi.

  • Re: Evento click su pressione di un tasto

    Si. Ok. Ero io a non aver capito. Grazie 

Devi accedere o registrarti per scrivere nel forum
16 risposte