Newsgroup: it.comp.lang.visual-basic
Titolo: Gestione del menu con i tasti

vorre dare la possibilità all'utente di scegliere le varie voci di un menu
(in una form di VB) usando una combinazione di tasti. Come posso fare per
individuare se l'utente ha digitato un tasto e se a quel tasto corrisponde
una voce del menu?
Grazie
Emanuela
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto



Potresti gentilmente spiegarti meglio! Sai sono alle prime armi. :-(


 Potresti gentilmente spiegarti meglio! Sai sono alle prime armi. :-(
Se apri l'editor di menu' e selezioni una voce, una delle property che puoi
impostare e' "Shortcut", scegliendo dal combo box la combinazione che
desideri; a questo punto non devi fare piu' nulla, perche' VB,
automaticamente, scatenera' un normale evento click quando l'utente
digitera' la combinazione relativa
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

> "Emanuela"


Non ti preoccupare io sono ancora più negata di te visto che ho fatto quello
che mi ha detto Luca ma non funziona (mi da errore e non salva il menu)
Sentite non so se quello che mi avete detto di fare risolve il mio problema.
IL fatto è che ho una form con 4 immagini attualmente collegate all'evento
click ad altre form. Volevo dare la possibilità, ad esempio che se premo f2
si apre la prima form. Siete sicuri che come dite voi funzioni? Come aggiro
l'errore che mi da?


*emanuela* ha scritto:

Questo, mi pare, c'entra poco coi menù...
Comunque, attiva il KeyPreview del Form e:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then
        Call pic_immagine1_click
    End If
End Sub

 si apre la prima form. Siete sicuri che come dite voi funzioni?
No, inizialmente parlavi di menu', e allora vale l'automatismo che ti
dicevamo, se invece vuoi avere uno shortcut associato ad altri
eventi/controlli allora la cosa e' leggermente diversa, perche' deve essere
gestita via codice...
Come prima cosa imposta la property KeyPreview = TRUE nella finestra dove
hai le tue immagini, questo fa in modo che gli eventi di tastiera vengano
ricondotti a quelli della form, indipendentemente dal controllo attivo (=con
il focus) in quel momento; quindi nell'evento Form_KeyUp scrivi qualcosa del
genere:
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
    'prima parte per i tasti funzione, o comunque shortcut semplici
    Case vbKeyF2
        Call Image1_Click
    Case vbKeyF3
        Call Image2_Click
    Case Else
        'qui invece verifichiamo shortcut compostiti
        If (Shift And vbCtrlMask) And KeyCode = vbKeyS Then
            'ctrl+s
            Call Image3_Click
        ElseIf (Shift And vbAltMask) And KeyCode = vbKeyF Then
            'alt+f
            Call Image4_Click
        End If
    End Select
End Sub

 l'errore che mi da?
vediamo se riesco.
dunque, poniamo che io voglia mostrare in un picturebox 4 immagini su file.
creo un menu' di primo livello
    carica
e 4 di secondo livello
    mnuCarica
        caption - name -  shortcut
        Carica &A - mnuCaricaA - ^A
        Carica &D - mnuCaricaB - ^D
        Carica &C - mnuCaricaC - ^C
        Carica &D - mnuCaricaD - ^D
^ sta per control+a, ecc.
gli shortcut con & nella caption servono quando clicchi il menu' carica di
primo livello: a quel punto alt+a ecc. eseguira' lo stesso comando che, non
chiamando il menu' di 1. livello, esegue ctrl-a.
se a design ora clicco il menu caricaA si apre una voce
    sub mnuCaricaA_click
    end sub
ci metto il codice che mi serve:
    sub mnuCaricaA_click
        picture1.picture=loadpicture("c:\img\img_a.jpg")
    end sub
stessa cosa per le altre voci
quando l'utente scegliera "Carica &A", si dovrebbe vedere la relativa
immagine, posto che sia nello stesso punto del disco. se invece le hai messe
in image nascosti o simili, adatti il codice di conseguenza.
puoi ottimizzare, scrivendo una sola routine e passando a,b,c,d come
parametro. ma questo lo vediamo poi, se ci arriviamo. intanto prova cosi'.
se poi non ce l'ho fatta neanche stavolta, posta pure :)
ah, si': meglio se posti anche il codice che stai usando tu e relative
spiegazioni.
ciao, a.

 ha scritto nel messaggio
news:80Z116Z3Z56Y1...@usenet.libero.it...

scusa ma non ho capito hai un menu o usi delle immagini come pulsanti,
in questo caso devi assegnare la proprieta keypreview del form su true
e inserire il codice che intercetta il pulsante che ti interessa nel
sub form_keydown (keycode as integer,shift as integer)
select case keycode
     case vbkeya
      inserisci il codice  tipo frmnome.show
e cosi per tutt i tasti che devi intercettare
end select
usa anche shift per il tasto alt e ......
ciao ilario