FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Otra de SetKey
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Otra de SetKey
Posted: Wed Mar 31, 2010 04:23 AM
Amigos del foro necesito de su ayuda

En un Get de mi aplicación estoy haciendo uso de SetKey, es un campo caracter de tamaño 5 donde introduzco parte de él con la finalidad de abrir un ListBox y que me posicione directamente en el browse en la clave mas próxima y que al elegir con doble click o con enter salga del browse y haciendo uso de un Keyboard me ponga la clave buscada en el Get de referencia.

Observo que siempre al abrir el browse me posiciona en el primer registro

Qué puedo hacer ?

Anexo mi código

Code (fw): Select all Collapse
/* ------------------------------------------------------------------
    PROGRAMA : -------------------- REPAPO.PRG
    PROPOSITO : ------------------- REPORTE DE APORTACIONES DE SOCIOS 
                                                CAJA DE AHORROS
    LLAMADO POR : ----------------- 
    ULTIMA ACTUALIZACION : -------- 27/02/10
---------------------------------------------------------------------- */
# include "FiveWin.ch"

STATIC cId_Emp

FUNCTION RepApo()
    LOCAL oDlg, oCbx, oBAce, oBSal, aItems, oBrush
    LOCAL cVar, oGet1, oGet2
    LOCAL cNomEmp
    
    aItems := {"Selectivo", ;
                  "General  "}
    cVar := "Selectivo"
    cId_Emp := SPACE(5)
    cNomEmp := SPACE(25)
    
    USE emp INDEX empnum, empnom NEW
    USE apo INDEX apoemp NEW
    SET RELATION TO apo->id_emp INTO emp
    
    DEFINE BRUSH oBrush FILENAME "sky3.BMP"
    
    DEFINE DIALOG oDlg RESOURCE "RepApo" ;
        BRUSH oBrush TRANSPARENT
        
    REDEFINE COMBOBOX oCbx VAR cVar     ID 101 OF oDlg ;
        ITEMS aItems
        
    REDEFINE GET oGet1 VAR cId_Emp      ID 102 OF oDlg ;
        WHEN LEFT(cVar,1) == "S" ;
        PICTURE "@!" VALID OkClave( oGet1, oGet2, cNomEmp, oDlg )
        oGet1:bGotFocus := {||SetKey( VK_F2, { || VerSoc() })}
        oGet1:bLostFocus := {||SetKey( VK_F2, nil )}
        
    REDEFINE GET oGet2 VAR cNomEmp  ID 103 OF oDlg
        oGet2:Disable()
    
    REDEFINE BUTTON oBAce ID 104 OF oDlg ;
        ACTION oDlg:End()
        
    REDEFINE BUTTON oBSal ID 105 OF oDlg ;
        ACTION oDlg:End()
        
    ACTIVATE DIALOG oDlg CENTERED             
        CLOSE DATABASES
        SET RELATION TO
            
RETURN NIL

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

STATIC FUNCTION OkClave( oGet1, oGet2, cNomEmp, oDlg )
    IF EMPTY( cId_Emp )
        MsgAlert("Introduzca una clave de socio")
        RETURN .F.
    ENDIF
    IF ! apo->( DBSEEK( cId_Emp ) )
        MsgAlert("Este socio no existe")
        RETURN .F.
    ENDIF
    cId_Emp := apo->id_emp
    cNomEmp := emp->nomemp
    oGet1:varput(cId_Emp)
    oGet2:varput(cNomEmp)
    oGet1:refresh()
    oGet2:refresh()
RETURN .T.

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

STATIC FUNCTION VerSoc()
    LOCAL oDlg, oLbx
    
    emp->(DBSEEK(TRIM(cId_Emp)))
    DEFINE DIALOG oDlg TITLE "Catálogo de socios" RESOURCE "BrwSoc"
    
    REDEFINE LISTBOX oLbx ;
        FIELDS emp->id_emp, emp->nomemp ;
        HEADERS "CLAVE", "NOMBRE" ;
        ALIAS "emp" ;
        ID 101 OF oDlg ;
        ON LEFT DBLCLICK( cId_Emp := emp->id_emp, oDlg:End() )
        oLbx:cToolTip := "Seleccione con doble click o con Enter"
        oLbx:bKeydown := {|nKey| IIF(nKey = 13, (cId_emp := emp->id_emp, oDlg:End()),)}
        
    ACTIVATE DIALOG oDlg CENTERED
        KEYBOARD cId_Emp

RETURN NIL          

// -------------------------------------------------------------
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com

Continue the discussion