Ayuda con SETKEY

Ayuda con SETKEY

Postby rolando » Thu Oct 16, 2008 1:13 am

Hola Amigos,

Pretendo usar la función SETKEY() y lo hace bién al definirla así:

oDlg:bGotFocus:= SetKey( VK_F12, { |nKey| CopioRegistro(recno()) })

Esto lo uso en un diálogo NOWAIT y por eso, para que cuando el diálogo no esté en foco, puse:

oDlg:bLostFocus:=SetKey( VK_F12, nil )

Pero no resulta como esperaba ya que al abrir este diálogo NOWAIT, no se el porque ejecuta al instante mi función CopioRegistro(recno()) que debiera ejecutarse únicamente al presionar F12.

Si le saco el:

oDlg:bLostFocus:=SetKey( VK_F12, nil ),

Ahí funciona bién la F12 pero queda asignada permanentemente a esa función y mi deseo es que cuando se cierre el dialog NOWAIT o este pierda el foco, esta tecla F12 no haga nada.

Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Postby Daniel Garcia-Gil » Thu Oct 16, 2008 1:33 am

es comun que esto suceda... creo que a todos nos a pasado alguna vez oDlg:bLostFocus y oDlg:bGotFocus, se les debe asignar bloques de codigo, por eso tiene esa "b" adelante...
hazlo asi:
Code: Select all  Expand view  RUN
oDlg:bGotFocus  := {|| SetKey( VK_F12, { |nKey| CopioRegistro(recno()) }) }
oDlg:bLostFocus := {|| SetKey( VK_F12, nil ) }
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby Ruben D. Fernandez » Thu Oct 16, 2008 1:36 am

Rolando:

Quizás puedas hacerlo en el Valid de dialogo.
Valid(SaleDialogo())


Function SaleDailogo()
SetKey( VK_F12, nil )

Return(.t.)

Espero te sirva.

Saludos

Ruben Fernandez.
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby rolando » Thu Oct 16, 2008 2:33 am

Gracias por responder,

Daniel, si hago como tu dices, la F12 no es detectada. No se si será porque todos los dialogs que uso son NOWAIT o qué pero no funciona como tu dices.

Rubén, lo cambié en el valid y funciona bién cuando se cierra ese dialog la tecla F12 queda "NIL", el problema está en que no puedo hacer que quede "NIL" cuando el dialog piede el foco.

Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Postby Daniel Garcia-Gil » Thu Oct 16, 2008 2:40 am

tienes que declararla fuera del oDlg:bGotFocus y dentro del oDlg:bGotFocus
SetKey( VK_F12, { |nKey| CopioRegistro(recno()) })

y

oDlg:bGotFocus := {|| SetKey( VK_F12, { |nKey| CopioRegistro(recno()) }) }
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby rolando » Thu Oct 16, 2008 3:08 am

No puedo hacerlo funcionar, pero lo solucioné asignando la tecla F12 a:

oDlg:bKeyDown := {|nK|if(nK<>27, (if(nk<>VK_F12 , (if(ControlU(nk , @oIcon) , oDlg:refresh() , )) ,;
copioregistro(recno())) ) , oDlg:end() )}

y así se acabó my problem.

Saludos

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: cmsoft, Google [Bot] and 43 guests