Page 1 of 1

Problema Teclas en Diálogo

Posted: Wed Oct 15, 2014 9:43 pm
by jmartial
Hola,

Tengo el problema de controlar las teclas pulsadas en un diálogo desde recursos.

Quiero controlar ESC, RETURN y alguna más.

Para empezar no me captura ninguna y al pulsar ESCAPE, se cierra el diálogo.

Code: Select all | Expand


 SetDialogEsc(.F.)                
    DEFINE DIALOG ::oDlg RESOURCE "FAMILIAS" FONT ::ofont COLOR CLR_BLACK, CLR_WHITE TRANSPARENT

    WITH OBJECT ::oTreeFamilias := TTreeView():REDEFINE(102, ::oDlg,CLR_BLACK,CLR_GREEN , .F. ,"" )
        :setColor( CLR_HBLUE, CLR_WHITE )
        :setFont(::oFontTree)
        :bEraseBkGnd = { || nil }  // Soluciona el fallo con Diálogos TRANSPARENT
   END

  ......

     ::oDlg:bKeyChar := {|nkey| msginfo(nKey) }
     ::oDlg:bKeyDown := {|nkey| msginfo(nKey) }
     
     ACTIVATE DIALOG ::oDlg CENTERED ON INIT ( oSelf:creaBarBtnsSelect(), oSelf:loadTree()  )
 



Ni muestra ninguna tecla, pulse la que pulse y se sale, ignorando SetDialogEsc(.F.)

No lo entiendo. ¿Tan dificil es que me funcione bkeydown o hay que hacer algo que se me escapa?

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 12:13 am
by joseluisysturiz
Con esto evitas se cierre el dialog con Esc...saludos... :shock:

ACTIVATE DIALOG oDlg CENTER ;
VALID( !GETKEYSTATE( VK_ESCAPE ) )

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 12:19 am
by jmartial
Hola,
Eso ya lo sabía, pero esa no es la cuestión, es el mal funcionamiento.


Gracias,

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 12:30 am
by joseluisysturiz
jmartial wrote:Hola,
Eso ya lo sabía, pero esa no es la cuestión, es el mal funcionamiento.


Gracias,

Intenta con esto, a mi me funciona al pelo, saludos... :shock:

AEval( oDlg:aControls, {|o| o:bKeyDown:= {|nKey| IF( nKey== VK_F5, mi_funcion(), NIL ) } } ) // PARA UNO SOLO...
AEval( oDlg:aControls, {|o| o:bKeyDown:= {|nKey| key_funciones( nKey, { } ) } } ) // PARA VARIOS...

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 11:45 am
by jmartial
Gracias Jose Luís,

Pero eso no es lo que busco, lo que busco es saber como hacer que funcione bKeyDown, bKeyChar y setDialogEsc(.F.) en los diálogos desde recursos.

Nada de esto me funciona, y creo que no es correcto.

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 3:29 pm
by joseluisysturiz
jmartial wrote:Gracias Jose Luís,

Pero eso no es lo que busco, lo que busco es saber como hacer que funcione bKeyDown, bKeyChar y setDialogEsc(.F.) en los diálogos desde recursos.

Nada de esto me funciona, y creo que no es correcto.

Entonces no te entendi, como dijistes esto "Tengo el problema de controlar las teclas pulsadas en un diálogo desde recursos.Quiero controlar ESC, RETURN y alguna más." asumi que necesitabas pulsar cualquier tecla y ejecutar algo, de la forma que te lo envie controlo cualquier tecla pulsada, principalmente las teclas Fn...no tengo mas ideas al respecto, saludos... :shock:

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 3:53 pm
by karinha

Code: Select all | Expand


#include "FiveWin.ch"

function Main()

   local oDlg, cTest := Space( 10 )

   SetDialogEsc( .F. )

   DEFINE DIALOG oDlg TITLE "Prueba de Teclado"
   
   @ 2, 2 GET cTest OF oDlg

   oDlg:bKeyDown = { | nKey | MsgInfo( "Minusculas.: " + Str( nKey ) ) }
   oDlg:bKeyChar = { | nKey | MsgInfo( "Mayusculas.: " + Str( nKey ) ) }

   ACTIVATE DIALOG oDlg CENTERED

return nil
 



Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 4:14 pm
by jmartial
Jose Luis,

Puse un código de ejemplo.

¿ Has probado ese código y te funciona ? En teoría debería funcionar y a mí no me funciona. Preguntaba si a todos os pasa igual o yo estoy
haciendo algo mal.

Siento no haberme explicado con claridad.

Gracias,

Re: Problema Teclas en Diálogo

Posted: Thu Oct 16, 2014 4:31 pm
by joseluisysturiz
jmartial wrote:Jose Luis,

Puse un código de ejemplo.

¿ Has probado ese código y te funciona ? En teoría debería funcionar y a mí no me funciona. Preguntaba si a todos os pasa igual o yo estoy
haciendo algo mal.

Siento no haberme explicado con claridad.

Gracias,


El codigo lo coloco antes del ACTIVATE del DIALOG y al pulsar las teclas que valide funciona sin problemas, saludos... :shock: