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
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
/* ------------------------------------------------------------------
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
// -------------------------------------------------------------