Consulta sobre SetKey

Post Reply
User avatar
juan_arroyo_t
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Consulta sobre SetKey

Post by juan_arroyo_t »

Amigos del foro

Por favor si alguien me puede ayudar

Parto de un browse principal de articulos de inventario con una barra de iconos, uno de los cuales filtra la base de datos.

Cuando en el dialogo de establecer las opciones para el filtro tecleo parte del codigo y pulso F2, siempre me manda al primer registro en el browser, no en el mas cercano o el que busco si meto el modelo de inventario completo.

Que es lo que estoy haciendo mal ?

De antemano gracias por su ayuda

Saludos

Code: Select all

# include "Fivewin.ch"
# include "Inkey.ch"

STATIC oBar

FUNCTION CamPre()
    LOCAL oDlg, oIco
    LOCAL olbx

    
    USE fam INDEX famcve NEW
    USE cat INDEX catmod, catfm NEW
    
    DEFINE ICON oIco FILENAME "logo3.ico"
    DEFINE DIALOG oDlg TITLE "Mantenimiento de artículos" RESOURCE "ActArt" ICON oIco
      oDlg:lHelpIcon := .F.

    REDEFINE LISTBOX olbx ;
        FIELDS cat->modelo, cat->desc1, cat->famil, cat->unidad, ;
                 cat->moneda, TRANSFORM(cat->prepub,"99,999,999.99"), ;
                 TRANSFORM(cat->premin,"99,999,999.99") ;
        HEAD "MODELO", "DESCRIPCION", "LINEA", "UNIDAD", "MONEDA", "PRECIO PUB.", ;
              "PRECIO MIN." ;
        FIELDSIZES 119, 322, 62, 66, 70, 90, 90 ;
        ALIAS "cat" ;
        ID 101 ;
        OF oDlg ;
        ON LEFT DBLCLICK( Procesa( oLbx ) )
        oLbx:aJustify = { .f., .f., .f., .f., .f., .t.,.t. }
        oLbx:cToolTip := "Seleccione con doble click o con Enter"
        oLbx:bKeydown := {|nKey| IIF(nKey = 13, Procesa( Olbx ),)}
        oLbx:nClrForeHead = nRGB(255,255,255)
        oLbx:nClrBackHead = nRGB(177,83,197)
        
    ACTIVATE DIALOG oDlg CENTERED ;
        ON INIT  barra( oDlg, oLbx )
        CLOSE DATABASES
        
RETURN NIL       

// --------------------------------------------------------

STATIC FUNCTION BARRA(oDlg, oLbx)
    DEFINE BUTTONBAR oBar SIZE 32,32 3DLOOK OF oDlg

    DEFINE BUTTON OF oBar ;
        FILENAME "filtro.bmp" ;
        ADJUST ;    
        NOBORDER TOOLTIP "Filtra" ;
        ACTION filtra()

    --------
    --------

RETURN NIL

//-------------------------------------------------------------------//

STATIC FUNCTION Filtra()
    LOCAL oDlg, oBAce
    LOCAL oGet1, oGet2, oGet3
    LOCAL cCodIni, cCodFin, cFamil
    
    cCodIni := cCodFin := SPACE(16)
    cFamil := SPACE(5)
    
    DEFINE DIALOG oDlg RESOURCE "CamPre"
      oDlg:lHelpIcon := .F.
    
    REDEFINE GET oGet1 VAR cCodIni ID 101 OF oDlg update ;
        PICTURE "@!"        
        oGet1:bGotFocus := {||SetKey( VK_F2, { || VerCodIni( oGet1, @cCodIni, oDlg ) })}
        oGet1:bLostFocus := {||SetKey( VK_F2, nil )}

    -------
    -------
    
    ACTIVATE DIALOG oDlg CENTERED
    
RETURN NIL

//-------------------------------------------------------------------//

STATIC FUNCTION VerCodIni( oGet1, cCodIni, oDlg )
    LOCAL oDlgIni, oLbx
        
    SELECT cat
    cat->(DBSEEK(TRIM(cCodIni)))

    DEFINE DIALOG oDlgIni TITLE "Catálogo de artículos" RESOURCE "BrwCat"
      oDlgIni:lHelpIcon := .F.

    REDEFINE LISTBOX olbx ;
        FIELDS cat->modelo, cat->desc1, ;
                 cat->famil ;
        HEAD "MODELO", PADC("DESCRIPCION",45," "), ;
              "LINEA" ;
        ALIAS "cat" ;
        ID 101 ;
        OF oDlgIni ;
        ON LEFT DBLCLICK( cCodIni := cat->modelo, oGet1:varput(cCodIni), ;
                                oGet1:refresh(),oDlgIni:End() )
        oLbx:bKeyDown := {|nKey| ;
            IIF(nKey = 13,(cCodIni:=cat->modelo,oGet1:varput(cCodIni), ;
                 oGet1:refresh()),),oDlgIni:End() }
        oLbx:cToolTip := "Seleccione con Enter o con Doble click"
        
    ACTIVATE DIALOG oDlgIni CENTERED
        KEYBOARD CHR(13)
        
RETURN NIL

//-------------------------------------------------------------------//


 
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Consulta sobre SetKey

Post by triumvirato »

Juan,

Es posible que cuando pulsas F2, cCodIni sigue valiendo aún Space( 16 ), puesto que aún no has validado el Get.

Prueba esto por si pudiese servir:

Code: Select all

        REDEFINE GET oGet1 VAR cCodIni ID 101 OF oDlg update ;
        PICTURE "@!";
        ON CHANGE Self:Assign()
        oGet1:bGotFocus := {||SetKey( VK_F2, { || VerCodIni( oGet1, @cCodIni, oDlg ) })}
        oGet1:bLostFocus := {||SetKey( VK_F2, nil )}
 
Saludos!
User avatar
juan_arroyo_t
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Re: Consulta sobre SetKey

Post by juan_arroyo_t »

triumvirato

Muchísimas gracias por tu respuesta, funcionó perfectamente

Saludos
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Post Reply