tget manipular un evento

tget manipular un evento

Postby luisduque » Mon Jun 02, 2008 4:59 pm

Hola a Todos


Necesito con la clase TGet saber cuando presiono la tecla Ariba, Abajo, Derecha, Izquierda

con el metodo
::bKeyDown := {|nKey| MsgInfo(nKey)}
no me sirve

necesito saber si existe una forma de saber cuando presiono Up, Down, Left, Right

Antes lo hacia con solo FiveWin

ni siquiera me sirve con
setkey(37,{||MsgInfo("x")})
setkey(38,{||MsgInfo("x")})
setkey(39,{||MsgInfo("x")})
setkey(40,{||MsgInfo("x")})

Gracias de antemano
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Postby karinha » Mon Jun 02, 2008 5:32 pm

Ejemplo:
Code: Select all  Expand view  RUN
IF GETASYNCKEY( VK_UP )
       RETURN( .T. )
ENDIF

ó

IF nKey = 46
       ? [ UP ]
ENDIF
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Hola

Postby luisduque » Mon Jun 02, 2008 7:07 pm

NO eso lo se, el problema es el siguiente tengo un get cualquiera un ejemplo que pida el nombre de una perona por ejemplo lo que quiero controlar es que dentro del cuadro del get al presionar tecla derecha poder ejecutar una accion
cuando utilizo
oBrw:bKeyDown := {|nKey| FunKeyDown(nKey)}
cuando presion por ejemplo una tecla como A el me da en nKey el numero 65, pero no me sirve con las teclas direccionales.
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Postby karinha » Mon Jun 02, 2008 7:54 pm

Use BTNGET.PRG y BTNGET.CH

Code: Select all  Expand view  RUN
    REDEFINE BTNGET aGet[1] VAR XCODVEND PICTURE "@K 99" ID 20 OF ODLG       ;
             RESOURCE "FOLDER16"                                             ;
             FONT oFnt2      UPDATE                                          ;
             COLOR nRGB( 000, 000, 000 ), nRGB( 243, 250, 200 )              ;
             VALID ( CLICK(), ACHA_CODIGO_VENDEDOR( XCODVEND, aGet ) )       ;
             ACTION( CLICK(), ACHA_CODIGO_VENDEDOR( XCODVEND, aGet ) )
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7860
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

hola

Postby luisduque » Mon Jun 02, 2008 9:33 pm

Gracias pero lo que necesito es que al presionar en un get tecla abajo o tecla arriba sin presionar ningun boton ni enter pueda efectuar un evento

oGet:bKeyDown := {|nKey|If(nKey = 46 funInsLin()}

eso es un ejemplo y trabaja bien pero necesito que me sirva con las teclas direccionales porque oGet:bKeyDown me toma letras numeros teclas de control y no me toma las direcionales , cuando tengo un get
si es caracter
ejemplo

Nombre: _Luis______________________ en cualquier momento puedo presionar la tecla direcional y necesito ejecutar un evento agradezco cualquier ayuda

antes con Fivewin pordia hacer esto y lo maneja bien

setkey(VK_UP,{|| FUNKEY()})
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Postby Antonio Linares » Mon Jun 02, 2008 10:32 pm

Luis,

Comprueba que tengas estas líneas en la Clase TGet:
Code: Select all  Expand view  RUN
METHOD KeyDown( nKey, nFlags ) CLASS TGet

   local nHi, nLo, nPos, nLastHi := -1, uVal

   ::nLastKey = nKey
   
   if ::bKeyDown != nil
      if ValType( uVal := Eval( ::bKeyDown, nKey, nFlags, Self ) ) == "N" .and. ;
         uVal == 0
         return 0
      endif   
   endif   

   do case
        ...

Si no las tienes, inclúyelas, y así oGet:bKeyDown te reconocerá las teclas arriba, abajo, etc.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42160
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Hola

Postby luisduque » Mon Jun 02, 2008 10:45 pm

Si las tiene Maestro Antonio


oGet:bKeyDown := {|nKey|msginfo(nkey)}

el me muestra cada una de las teclas que presiono en el get bien pero no toma en cuenta las teclas direccionales.

Y trate de hacerlo de otra forma con setkey
el me hace bien el
setkey(vk_f2,{||funkey()})
pero
setkey(vk_up,{||funkey()})
setkey(vk_down,{||funkey()})
no las toma en cuenta y esa es una solucion a lo que necesito


Gracias de antemano
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Re: Hola

Postby mmercado » Tue Jun 03, 2008 4:52 am

luisduque wrote:el me muestra cada una de las teclas que presiono en el get bien pero no toma en cuenta las teclas direccionales.
Hola Luis:

Un pequeño ejemplo funcionando:
Code: Select all  Expand view  RUN
#include "Fivewin.ch"


Function Main()

    LOCAL oDlg, oGet, ;
          nVal := 123

    DEFINE DIALOG oDlg;
           SIZE 400, 400

    @ 10, 0 GET oGet VAR nVal OF oDlg SIZE 40, 10 PIXEL

    oGet:bKeyDown := {|nKey| If( nKey == VK_UP, MsgInfo( "UP" ), ;
                             If( nKey == VK_DOWN, MsgInfo( "DOWN" ), Nil ) ) }

    ACTIVATE DIALOG oDlg CENTERED

Return Nil

Espero te ayude.

Manuel Mercado
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests