Newsgroup: it.comp.lang.visual-basic
Titolo: [?] [2] Subclassing di una flex grid

Riprovo perche' la cosa e' strana...
Allora, io ho una flessibile MS flex grid, la quale mi espone un utilissimo
evento keydown.
L'utilissimo evento keydown, pero', non segnala la pressione dei tasti
cursore.
Io, furbescamente, decido di subclassare la flessibile flex grid, percui mi
appresto di buon grado a fare le varie GetWindowLong, SetWindowLong e tutto
quello che serve per subclassare con eleganza la flessibile flex grid.
A questo punto esamino tutti i messaggi in arrivo in cerca dell'inevitabile
messaggio WM_KEYDOWN.
Eseguo l'interessante ricerca anche con l'intelligente Spy++, che mi
segnala, giustamente, che la mia ottima sub, di cui ho il chiaro indirizzo
in una variabile, e' effettivamente la windowprocedure della finestra.
Lo stesso Spy++ mi segnala inoltre che la mia ottima procedura riceve, ogni
volta che premo un tasto cursore, un WM_KEYDOWN.
E allora perche' non lo vedo?????????????????
Cioe', leggo i keydown di tutti i tasti ECCETTO quelli cursore, che sono
ovviamente gli unici che mi interessano, dato che gli altri li leggevo pure
col normale _keydown.
Eppure Spy++ segnala che il messaggio e' stato postato alla procedura e che
la procedura e' quella corretta...
Sono tonto io o c'e' davvero qualcosa che gira per il verso sbagliato?
Ciaotutti / TIA,
Alessandro

 ha scritto nel messaggio
news:9a29f6$3e60o$1...@ID-68324.news.dfncis.de...


 verrebbe intercettato il CTRL da solo!
se ho capito il problema di alessandro, non si risolve.
con form1.keypreview=true, il codice qui sotto non intercetta frecce e
pagine s/g:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    lblKeyCode = "KeyCode: " & KeyCode
    lblShift = "Shift: " & Shift
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
    lblKeyAscii = "KeyAscii: " & KeyAscii
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    lblKeyCode = "KUP-KeyCode: " & KeyCode
    lblShift = "KUP-Shift: " & Shift
End Sub
ciao, a.

Il guaio e' che effettivamente, qundo usavo pesantemente la flexigrid in vb5, sembrava che
la griglia si mangiasse gli eventi di tastiera.
Il workaround che avevo adottato era stato quello di far apparire una textbox
di dimensioni uguali alla cella ed intercettavo cosi' il tasto sulla textbox.
Sarei comunque grato se qualcuno avesse un suggerimento migliore.
ciao, hal

 ha scritto nel messaggio
news:9a6p2k$q67$1...@serv1.iunet.it...
| Caro Alessandro,
|
| devi  utilizzare l'evento KeyUp al posto del piů intuitivo KeyDown: se ci
| fai caso molti programmi non funzionano alla pressione del tasto, ma al
suo
| rilascio.
|
| In effetti, la cosa non č poi cosě ovvia, ma č dettata dalla seguente
| considerazione.
|
| Immaginiamo di dover intercettare la pressione del tasto CTRL e,
| contemporaneamente di quella del (classico) CTRL-C. Se usassimo l'evento
| KeyDown, non riusciremmo mai ad intercettare la sequenza CTRL-C, in quanto
| verrebbe intercettato il CTRL da solo!
|
| Spero di esserti stato utile.
|
| Ciao!
|
| ============================================
|                       CYBER Hardware & Software
|                          di Albani Ettore Massimo
|                            Via Scapacchiň, 48/B
