Asociar teclas de función a funciones específicas

Asociar teclas de función a funciones específicas

Postby jose_murugosa » Tue May 09, 2006 5:31 pm

Colegas, espero puedan ayudarme en esta dificultad.... :oops:

Necesito asociar a los botones de una dialog que manipula los registros
de una base de datos (botones: nuevo, modificar, eliminar, anterior, siguiente, ultimo, primero, etc) teclas de función de modo que cuando se presiona por ejemplo la tecla F7 equivalga a presionar el botón eliminar.

Lo hice así:
.....
#include "inkey.ch"
......

SetKey(K_F2 , {|| Nuevo( oDbf, oBtn, oDlg, oPage:aDialogs[1], ;
oSay, oGet, cNom_Dbf, cAlias ) })
SetKey(K_F8 , {|| Modificar(oPage:aDialogs[1], oBtn) })
SetKey(K_F7 , {|| Borrec( oDbf, oBtn, oDlg, oPage:aDialogs[1], ;
oSay ) }) .......

DEFINE DIALOG .......
.....
ACTIVATE DIALOG .......
SetKey(K_F2 )
SetKey(K_F8 )
SetKey(K_F7 )
......
RETURN NIL

Pero al presionar las teclas de función no pasa nada, aunque con los botones las funciones andan perfecto.

que está mal?:shock:
Hay una forma mejor o más correcta de hacerlo? :roll:

Gracias desde ya por la ayuda que me puedan brindar. :D
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1181
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Asociar teclas de función a funciones específicas

Postby mag071 » Tue May 09, 2006 7:29 pm

Oye Jose,

yo lo hago asi como son botones los que quieres activar yo uso

CASE nKey==VK_F2
o123:SetFocus()
o123:Click()

siendo o123

REDEFINE BUTTON o123 ID 123 OF oDlgLot ;
PROMPT "&Buscar Ticket" Action (::BuscarTicket(::oComboSigno))

espero me entiendas y te funcione

Suerte
Mario Antonio González Osal
Venezuela
m a g 0 7 1 @ g m a i l. c o m
User avatar
mag071
 
Posts: 140
Joined: Thu Feb 02, 2006 12:09 pm
Location: Venezuela

HOla,,, Debe funcionar

Postby Willi Quintana » Wed May 10, 2006 3:22 am

Hola Sr...
debe funcionar,, yo oo hago asi

SetKey(VK_F12,{||AbreCajonDinero(aSerieNumero)})


Salu2
User avatar
Willi Quintana
 
Posts: 1022
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Gracias

Postby jose_murugosa » Wed May 10, 2006 3:39 am

Gracias amigos por su ayuda, verdaderamente la mayoría de las veces este foro me saca de un apuro.

El error, (que se desprende de vuestros amables mensajes) es que estaba escribiendo mal la variable k_f2 en lugar de vk_f2 y así susesivamente, al reemplazar esto ya me anda, aunque tengo ahora unos errores que creo que deriban del caracter local de las variables que utilizo en el programa, pero veré como lo soluciono.

Lo importante: MUCHAS GRACIAS A TODOS!!!!! :D
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jose_murugosa
 
Posts: 1181
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Postby Maurizio » Wed May 10, 2006 6:14 am

I use this

Maurizio

//---------------------------------
DEFINE BUTTON oBtn RESOURCE "TEST" OF oBar ACTION Msginfo("PRESS F2")
oBtn[1]:cargo := VK_F2
oDlg:bKeyDown = { | nKey | CheckKey(nKey,oBar)}
//----------------------------------
Function CheckKey(nKey,oBar)
Local nX,nY
IF nKey >= VK_F2 .AND. nKey <= VK_F9
IF oBar:lActive
FOR ny := 1 TO len(oBar:aControls)
IF oBar:aControls[ny]:cargo # nil .AND. oBar:aControls[ny]:lActive
if oBar:aControls[nY]:cargo == nKey
oBar:setfocus()
oBar:aControls[nY]:Click()
endif
ENDIF
NEXT
ENDIF
ENDIF
Return nil



[/code]
User avatar
Maurizio
 
Posts: 825
Joined: Mon Oct 10, 2005 1:29 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 69 guests