Autore Topic: [RISOLTO]Evento KeyPress dentro TextBox in form aperto con Showmodal  (Letto 1209 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
come da lunghissimo titolo se apro un form da un altro form con l'opzione showmodal, non mi funziona l'evento keypress in una textbox
togliendo l'opzione modal l'evento funziona regolarmente
Come mai?
« Ultima modifica: 27 Luglio 2010, 16:02:01 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #1 il: 19 Luglio 2010, 23:08:31 »
prova a utilizzare l' evento keypress del forn invece che della text

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #2 il: 19 Luglio 2010, 23:22:14 »
purtroppo non funziona :-\
che sia un bug?
"e il naufragar m'è dolce in questo mar"

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #3 il: 21 Luglio 2010, 16:14:30 »
come da lunghissimo titolo se apro un form da un altro form con l'opzione showmodal, non mi funziona l'evento keypress in una textbox
togliendo l'opzione modal l'evento funziona regolarmente
Come mai?
Ma sei sicuro? Io uso l'evento keypress nel mio programma dove i richiami delle form subordinate sono tutti fatti con showmodal ed a me funzionano perfettamente, sia a livello di textBox che a livello di form.
Attenzione, l'evento KeyPress viene scatenato soltanto con la pressione di un tasto, non dal click del mouse!

Riporto come esempio una parte di codice:

Richiamo di Form subordinate:
Codice: [Seleziona]
PUBLIC SUB Menu6_Click()    'Inserimento Movimenti giornalieri
  $_SceltOper = "Menu6"   'è stato scelto il percorso dell'INSRIMENTO MOVIMENTI DI GIORNATA CONTABILE
  Form1.$_TipoRich = "Autom"
  Form1.ShowModal
  IF $_SceltOper = "Menu6" THEN
     Form2.ShowModal      'avvio della procedura di INSRIMENTO MOVIMENTI DI GIORNATA CONTABILE
  ELSE     
  ENDIF
END

Schedulazione dell'evento KeyPress:
Codice: [Seleziona]
PUBLIC SUB ImpMovDig_KeyPress()
  $_StriMia = Modulivari.QualeTasto($_StriMia) ' richiamo del modulo per limitare l'input ai soli dati numerici
  SELECT CASE $_StriMia
          CASE "Freccia-dx", "Freccia-Sx", "Freccia-su", "Freccia-giù", "Freccia-Home", "Freccia-fine", "Pag-su", "Pag-giù", "Tab-Avanti", "Tab-Indietro", "Esc", "Canc-crt-prec", "Canc-crt-corr" 
'          CASE "Freccia-dx", "Freccia-
          CASE "0" TO "9"
              $_StriMia = ImpMovDig.Text
              i_Conta = ImpMovDig.Pos
              Modulivari.i_NumDecim = 2    'Tipo di dato ammesso  -->>  solo numerico con 2 cifre decimali
              $_StriMia = Modulivari.TestDecimali($_StriMia, i_Conta)    'rifiuta l'input delterzo crt. dopo la virgola
              i_Conta = Val(Right$($_StriMia))    'rilevo il flag di presenza virgola
              $_StriMia = Left($_StriMia)         'rilevo il n° dei crt decimali
              IF i_Conta <> 0
                IF $_StriMia = "2" THEN
                  IF b_Sw = FALSE
                      STOP EVENT
                  ELSE
                    b_Sw = FALSE
                  ENDIF
                ENDIF
              ENDIF
          CASE ".", ","
              i_Conta = InStr(ImpMovDig.Text, ",")
              IF i_Conta <> 0 THEN   
                  STOP EVENT
              ENDIF
          CASE ELSE
               STOP EVENT
  END SELECT
END

Individuazione del tasto premuto
Codice: [Seleziona]
PUBLIC FUNCTION QualeTasto($_Como AS String) AS String  'Intercettazione del tasto premuto dall'operatore
  DIM $_Type AS String
 
  $_Type = $_Como
  SELECT CASE Key.Code
          CASE Key.Enter, Key.Return      'testa la pressione del tasto "INVIO" del tastierino numerico ovvero della tastiera alfanumerica
            $_Como = "Invio"
          CASE Key.Right
            $_Como = "Freccia-dx"           
          CASE Key.Left
            $_Como = "Freccia-Sx"                       
          CASE Key.Up
            $_Como = "Freccia-su"         
          CASE Key.Down
            $_Como = "Freccia-giù"           
          CASE Key.Home
            $_Como = "Freccia-Home"   
          CASE Key.End
            $_Como = "Freccia-fine"           
          CASE Key.PageUp
            $_Como = "Pag-su"
          CASE Key.PageDown
            $_Como = "Pag-giù"
          CASE Key.Tab
            $_Como = "Tab-Avanti"
          CASE Key.BackTab
            $_Como = "Tab-Indietro"
          CASE Key.Esc
            $_Como = "Esc"
          CASE Key.BackSpace
            $_Como = "Canc-crt-prec"           
           CASE Key.Delete
            $_Como = "Canc-crt-corr" 
          CASE Key.F1
            $_Como = "F1"
          CASE Key.F2
            $_Como = "F2"
          CASE Key.F3
            $_Como = "F3"
          CASE Key.F3
            $_Como = "F4"
          CASE Key.F5
            $_Como = "F5"
          CASE Key.F6
            $_Como = "F6"
          CASE Key.F7
            $_Como = "F7"
          CASE Key.F8
            $_Como = "F8"
          CASE Key.F9
            $_Como = "F9"
          CASE Key.F10
            $_Como = "F10"
          CASE Key.F11
            $_Como = "F11"
          CASE Key.F12
            $_Como = "F12"
'          CASE Key.Shift & Key.Home
 '             Message.Info("Hai selezionato crt nella stringa")
          CASE ELSE
            $_Como = Key.Text
            SELECT CASE $_Type
                    CASE "N", "€", "£"     'Tipo di dato ammesso  -->>  solo numerico"
                      SELECT CASE $_Como
                              CASE "0" TO "9"
                              CASE ELSE
                                SELECT CASE $_Type
                                        CASE "N", "€"     'dato numerico ammesso con crt decimali
                                          SELECT CASE $_Como
                                                  CASE ".", ","
                                                  CASE ELSE
                                                    STOP EVENT
                                          END SELECT
                                        CASE ELSE
                                          STOP EVENT
                                END SELECT
                      END SELECT
                    CASE "A"     'Typo di dato ammesso  -->>  solo alfabetico
                    SELECT CASE $_Como
                            CASE "A" TO "Z", "a" TO "z"
                            CASE ELSE
                                'Message.Info("Tasto: " & Key.text & "/cod." & Key.Code & Chr(10) & "non riconosciuto")
                                STOP EVENT
                     END SELECT
             END SELECT
  END SELECT
  RETURN $_Como
END

Non si sa mai, magari ti può essere d'aiuto. :)
 :( :(
« Ultima modifica: 21 Luglio 2010, 16:16:45 da Picavbg »
:ciao:

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #4 il: 22 Luglio 2010, 09:34:05 »
il tuo allegato è molto interessante
il problema nel mio casa sta a monte, cioè non viene generato l'evento keypress premendo un tasto
ho controllato in tutte le maniere, ma nisba
l'evento stesso si genera solo se tolgo l'opzione modal del form
non vorrei che sia qualche impostazione a livello di progetto
questa sera provo a crearne uno e postarlo quì

"e il naufragar m'è dolce in questo mar"

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #5 il: 22 Luglio 2010, 18:09:03 »
Quale versione di Gambas utilizzi?
:ciao:

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #6 il: 22 Luglio 2010, 21:07:51 »
Uso la 2.20.2
allego un esempio
"e il naufragar m'è dolce in questo mar"

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #7 il: 22 Luglio 2010, 22:02:48 »
ho provato a scaricare il tuo esempio.... a me l'evento funziona.

provato con la 2.19 e con la versione 2.21 scaricata da svn.

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #8 il: 22 Luglio 2010, 22:16:17 »
lo sto provando su 2 pc diversi con la 2.20.2 compilata e su un terzo in virtualbox con  ubuntu maverick 2.20.2 da repository
mi viene il sospetto che sia la 2.20.2 oppure qualche strana impostazione di mie progetti
se riesco installo la 2.19 e riprovo
« Ultima modifica: 23 Luglio 2010, 14:18:27 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #9 il: 27 Luglio 2010, 15:38:13 »
sembra che questo problema fosse un bug
nella nuova versione rilasciata oggi (2.21.0)viene segnalato come bug risolto
"e il naufragar m'è dolce in questo mar"

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #10 il: 27 Luglio 2010, 15:42:47 »
sembra che questo problema fosse un bug
nella nuova versione rilasciata oggi (2.21.0)viene segnalato come bug risolto


Perfetto allora....se hai risolto sai cosa fare.

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #11 il: 27 Luglio 2010, 16:01:40 »
Mi bevo una birra?? :2birre:

Ok
"e il naufragar m'è dolce in questo mar"

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Evento KeyPress dentro TextBox in form aperto con Showmodal
« Risposta #12 il: 27 Luglio 2010, 16:04:20 »
Mi bevo una birra?? :2birre:

Ok


Quella sempre....purchè sia in compagnia....:2birre: