Newsgroup: it.comp.appl.access
Titolo: Equiparare pressione tasti a click pulsante

Ciao ragazzi, sapete dirmi come fare in una form ad equiparare la
pressione di un tasto nella tastiera ad un click di un pulsante nella
form stessa?
Ad esempio che la pressione della barra spaziatrice sia come fare click
su un determinato pulsante.
Grazie in anticipo

 ha scritto nel messaggio 
news:1119989939.5...@g43g2000cwa.googlegroups.com...

Prima di tutto devi impostare a sì la proprietà della maschera "Anteprima 
tasti"; poi potresti sfruttare l'evento "su pressione" della maschera stessa 
per intercettare il tasto premuto. Per esempio:
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then
MsgBox "Hai premuto barra spaziatrice. Quello che vuoi"
End If
End Sub
Ovviamente la cosa può essere fatta anche su pressione di un singolo 
controllo e in questo caso non è importante impostare a sì l'anteprima 
tasti.
Ciao, Carlo 

 ha scritto nel messaggio 
news:1119989939.5...@g43g2000cwa.googlegroups.com...

Non è che per caso vorresti definirti una sequenza di tasti tutta tua (es. 
CTRL-G) che esegua una determinata funzione?
Ciao.
-- 
Sergio MAZZA 

r eseguire il suono, senza doverla duplicare.
Ciao,
come giustamente ti dicono sia Carlo che Sergio non puoi andare a fare un 
discorso del genere (per essere "pignolo" potresti anche farlo ma il "gioco 
non vale la candela" -> credimi)
Il s.o. windows funziona in maniera tale che aspetta  gli eventi dall'utente 
( puoi "subclassare" determinati eventi e sostituirli con altri scritti da 
te) ed in  base a quelli risponde mentre tu  "praticamente" vorresti 
"simulare" la realizzazione dell'evento da codice -> i 2 principi non si 
sposano bene :-(  e lacosa infastidirebbe zio Bill  ;-)
L'unica cosa che puoi fare è crearti 2 immagini che simulano il pulsante 
"schiacciato" e "rialzato" e giacchè ti piacciono le API usi la funzione 
keybd_event della libreria user32.dll
Ti passo il codice:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan 
As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_EXTENDEDKEY = &H1 'pressione del tasto (keyDown)
Const KEYEVENTF_KEYUP = &H2 'rilascio del tasto premuto (keyUp)
Private Sub Form_KeyPress(KeyAscii As Integer)
   keybd_event vbKeyA, 0, KEYEVENTF_EXTENDEDKEY, 0 'simula la pressione del 
tasto "A"
ImmaginePulsanteSchiacciato.Visible=True
ImmaginePulsanteRialzato.Visible=False
Call TuaRoutine
 keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0 'simula il rilascio del tasto "A"
ImmaginePulsanteSchiacciato.Visible=False
ImmaginePulsanteRialzato.Visible=True
End Sub
----
Oltreutto non capisco cosa stai costruendo (audiometro) e quindi se ti serve 
necessariamente il classico pulsante etc...o poi sostituirlo con altro
Notte :-)
Gaspare

[CUT]
La funzione la trovi documenta con esempio all'url 
http://www.mentalis.org/apilist/keyb_event.shtml
 mentre dei pulsanti sono a 
quest'url 
http://gifanimate.html.it/bottoni.asp
 -> ...se "cerchi con + 
attenzione" trovi di meglio
Buon lavoro ;-) 

[CUT]
Dimenticavo-> per vedere le 2 immagini simulare il pulsante basta 
intervenire alla fine del richiamo della tua sub con un MsgBox->in maniera 
tale che interrompi il flusso :-) 

no, perchè sto creando un programmino che simuli le funzionalità di
uno strumento che si chiama audiometro e che ha sostanzialmente una
console con dei pulsanti percui, le combinazioni di tasti mi
complicherebbero la vita.
Per quanto mi ha detto invece carlo, innanzitutto lo ringrazio per la
risposta, ma l'evento su pressione lo conosco, il problema è che....ad
esempio nel mio caso:
1: ho 2 cornici una con 5 bottoni che danno se selezionati
rispettivamente i valori alla cornice 500, 1000, 2000, 3000, 4000,
mentre la seconda cornice con 2 option button danno come valori o 1 o 2
che io ho poi associato alle lettere S e D.
2: prendo la lettera della seconda cornice (S per esempio) e il valore
della prima cornice (500 ad esempio) per poi avere una stringa unita
S500.
3: tramite le api alla pressione di un tasto mi esegue il file S500.wav
io praticamente premendo la barra spaziatrice voglio vedere quel
pulsante andare giù e lanciare la routine di esecuzione del file
audio, ma non so come e oltretutto ad esempio premendo il tasto S
vedere l'option button rdella seconda cornice relativo selezionarsi. e
così via.
ho cercato di essere il più chiaro possibile, insomma io premo un
tasto e vedo un pulsante andare giù senza che sia onfocus o roba
simile. oppure premo un tasto e mi lancia la private sub del pulsante
per eseguire il suono, senza doverla duplicare.
Grazie ancora

 ha scritto nel messaggio 
news:1120065997....@g44g2000cwa.googlegroups.com...






Grazie ancora
[risposta]
La SendKeys (vedi help) forse non fa vedere il tasto che va giù ma emula la 
pressione di qualsiasi tasto...
Ciao.
-- 
Sergio MAZZA 


Io ho escogitato un effetto così, applicabile a normali pulsanti, ma va bene
per dei "bottoni" contenuti nelle cornici.
In una maschera ho tre etichette, Etichetta21, Etichetta22 ed Etichetta23.
Hanno aspetto in rilievo (SpecialEffect=1). Inoltre ho una Etichetta20 che
deve ricevere un valore.
Le tre etichette hanno .Caption rispettivamente "&500", "&1000" e "&4000".
Nella maschera ho messo Anteprima tasti a Sì e all'evento Su tasto giu la
seguente routine:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 53 Then
        Etichetta21.SpecialEffect = 2
        Etichetta22.SpecialEffect = 1
        Etichetta23.SpecialEffect = 1
        Etichetta20.Caption = "500"
    ElseIf KeyCode = 49 Then
        Etichetta22.SpecialEffect = 2
        Etichetta21.SpecialEffect = 1
        Etichetta23.SpecialEffect = 1
        Etichetta20.Caption = "1000"
    ElseIf KeyCode = 52 Then
        Etichetta23.SpecialEffect = 2
        Etichetta21.SpecialEffect = 1
        Etichetta22.SpecialEffect = 1
        Etichetta20.Caption = "4000"
    End If
End Sub
Il risultato è di "premere" l'etichetta corrispondente ad un certo tasto (5,
1 o 4) e di porre un valore in Etichetta20.
La maschera ha anche una routine all'evento Su tasto su:
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
        Etichetta21.SpecialEffect = 1
        Etichetta22.SpecialEffect = 1
        Etichetta23.SpecialEffect = 1
End Sub
che "rialza" il "tasto" premuto.
In realtà di pulsanti reali non ce ne sono.
Ora, per adattarlo alle tue esigenze, si può fare che altri due valori di
KeyCode aggiungano una lettera al valore di Etichetta20 e facciano partire
il relativo .wav.
Ci vorrà tutta una serie di controlli per il caso che uno scelga prima la
lettera del numero, o prema in sequenza due valori diversi perché si è
sbagliato, e così via, ma ritengo che non ci siano grosse difficoltà.
Ciao.
Riccardo
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/