Hola,
¿Existe alguna manera de asignar una tecla aceleradora a los controles GET y COMBOBOX? Por ahora, sólo me funciona con los CHECKBOX.
Saludos,
Rodolfo
Hola,
¿Existe alguna manera de asignar una tecla aceleradora a los controles GET y COMBOBOX? Por ahora, sólo me funciona con los CHECKBOX.
Saludos,
Rodolfo
Has probado utilizar Por ejemplo:
SetKey(VK_F2,{|| funcion()})
Un Saludo.
Hola, softruz.
Gracias por responder.
El asunto del SetKey lo tengo claro y funcionando muy bien. Lo que busco es, más bien, poder asignarle una leyenda a un control GET o COMBOBOX, la leyenda contendrá obviamente el "&" para indicar la tecla que será utilizada en conjunto con la tecla ALT para pasar el foco a ese control. Busco algo como lo que sucede hoy con los botones que, uan vez que le indicas cual va a ser la tecla aceleradora, pueder utilizar la tecla ALT + la letra aceleradora asignada y el foco pasa al botón (En el caso del botón además despara la acción, en el caso de los controles basta con pasar el foco al control indicado).
Saludos,
Rod.
oDlg:bKeyDown = { | nKey, nFlags | TeclaFunc(nKey,oGet) }
*******************************************************************************
** Acelerador de Teclas
STATIC FUNCTION TeclaFunc(nKey, oGet)
IF nkey = 120 && F9
  oGet[01]:SetFocus()
ENDIF
IF nKey = 114 && F3
  oGet[02]:SetFocus()
ENDIF
IF nKey = 119 && F8
  oGet[03]:SetFocus()
ENDIF
RETURN NILHoa, cmsoft.
Gracias por responder. Sin embargo busco la forma más estandar (Como en los diálogos de opciones de Word o Excel), es decir utilizando la tecla ALT en combinación con la tecla aceleradora asignada a cada control. He intentado con oDlg:KeyDown y resulta que puedo detectar las teclas CONTROL y SHIFT utilizando GetKeyState( VK_CONTROL ) o GetKeyState( VK_SHITF ), pero no he podido detectar cuando se utiliza la tecla ALT.
Necesito poder llegar a cualquier control de un diálogo utilizando una combinación de teclas (ALT + Tecla-aceleradora), pero hasta ahora no he encontrado la forma.
Antonio, ¿Habrá alguna manera de lograr esto?
Saludos,
Rodolfo
#include "FiveWin.ch"
function Main()
LOCAL oDlg, lExit := .f., oBtn
LOCAL cName:=Space(25), cFirst:=Space(25)
DEFINE DIALOG oDlg FROM 5, 5 TO 15, 40 TITLE "A Dialog Box"
@ 1, 2 SAY "&Name" OF oDlg
@ 1, 4 GET cName OF oDlg
@ 2, 2 SAY "&First" OF oDlg
@ 2, 4 GET cFirst OF oDlg
@ 3, 4 BUTTON "&Ok" OF oDlg SIZE 40, 12
@ 3, 12 BUTTON oBtn PROMPT "&Cancel" OF oDlg SIZE 40, 12 ACTION ( lExit := .t., oDlg:End() )
ACTIVATE DIALOG oDlg VALID lExit
return nilHola, Alfredo.
Muchas gracias por la ayuda, hasta ahora no habÃa necesitado de esto. En mi caso utilizo recursos por lo que, basado en tu ejemplo, fue suficiente cambiar el orden de los controles de tal forma que la etiqueta correspondiente a cada control este inmediatamente antes del control.
Muchas gracias por la ayuda, espero que pronto podamos vernos, platicar y, ya instalados, hasta recetarnos un tequilita en algúna hora-del-amigo que hay por tus rumbos, jejeje.
Saludos,
Rodolfo
Asi es señor, solo hay que ordenar los controles.
Y si se trata de tequila, cualquier compromiso se suspende de inmediato!
Saludos.