FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index All products support Problemi con il metodo oBrw:bKeychar
Posts: 858
Joined: Fri Oct 07, 2005 12:00 PM
Problemi con il metodo oBrw:bKeychar
Posted: Fri Nov 25, 2005 04:42 PM

Ciao a tutti,
siete in sciopero ; ) ?

Spero di no perché ho un problema abbastanza strano che vorrei sottoporre alla vostra attenzione.

Nel software gestionale che produco utilizzo molto la classe tcbrowse (standard di fivewin) per mostrare il contenuto di array multidimensionali.
Facendo poi doppio click sul record fornisco all'utente la possibilità di modificare i dati contenuti nel record aprendo una dialog.
Fin qui niente di strano.

Il fatto è che trattandosi di un software di contabilità che richiede molto inserimento dati ho previsto praticamente ovunque la possibilità di operare anche solo con la tastiera.

Nel caso di un browse aggiungo quindi un codeblock che mi rilevi la pressione del tasto invio mentre il browse ha il focus:

oBrw:bKeyChar={|nKey|if(nKey=13(<entro nella fase di inserimento dati>,))}

la fase di inserimento dati consiste nell'aprire una dialog e richiedere un paio di informazioni in una get

Il problema è che se tengo premuto all'infinito il tasto invio alla fine il programma mi va in errore. Dal tipo di errore credo il problema sia dovuto al fatto che il codeblock mi rileva un secondo invio prima di terminare l'esecuzione del codice contenuto nel codeblock accavallando così le operazioni (e rilasciando in modo incorretto la dialog di inserimento dati).

Qui la domanda:
esiste un sistema per bloccare la rilevazione dei tasti premuti finché il codice contenuto nel codeblock richiamato dal tasto "invio" precedente non è completamente eseguito ?

Spero di essere stato chiaro.

Grazie in anticipo.

Marco Turco

Best Regards,



Marco Turco

SOFTWARE XP LLP
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
Problemi con il metodo oBrw:bKeychar
Posted: Fri Nov 25, 2005 04:56 PM
Marco, io lo faccio cosi:

....

oWinArt:bKeyDown := { | nKey, nFlags | Tasti( nKey, !(oLbxArt:nLen == 0) ) }
....


***************
STATIC FUNCTION Tasti(nKey, lAtti )
***************

oWinArt:bKeyDown := { | nKey, nFlags | NIL }

IF nKey == VK_INSERT .AND. lAnd( 4, oV:aDirittiUtente[2] ) // Tasto Insert: Aggiunge
AnagraArt(.T., nil )
ENDIF

IF( nKey == VK_F12, oWinArt:End(),) // F12: chiude

IF lAtti

IF nKey == VK_RETURN .AND. lAnd( 8, oV:aDirittiUtente[2] )
AnagraArt(.F., nil)
ENDIF

...
...
...

oWinArt:bKeyDown := { | nKey, nFlags | Tasti(nKey, IF(oLbxArt:nLen == 0, .F., .T.) ) }
RETURN NIL
Pedro Gonzalez
Posts: 858
Joined: Fri Oct 07, 2005 12:00 PM
Problemi con il metodo oBrw:bKeychar
Posted: Fri Nov 25, 2005 05:17 PM

In effetti non sempre bisogna cercare soluzioni complicate.

Grazie 1000.

Marco

Best Regards,



Marco Turco

SOFTWARE XP LLP

Continue the discussion