Sigue OnKeyUp
Publicado: Lun Dic 17, 2007 11:52 am
Sigue el problema con On Key Up ya tratado en otro hilo
Explico de nuevo, la idea es hacer un browse editable de manera de que
cuando entro el codigo en la columna codigo el sistema busque en otra
tabla si el mismo existe en caso de que no me abra una ventana con la
tabla de codigos en un browse (es un lookup) desde el cual pueda
seleccionar uno con dobleclik, todo funciona bien hasta que se me
ocurrio que el cliente ademas de seleccionar el codigo con dobleclick
pudiera hacerlo con enter para evitar el mouse, entonces lo que ocurre
es que en el primer browse le da enter y abre el segundo browse
(busqueda) pero este ultimo por algun motivo??? reconoce el evento
OnKeyUp y toma el enter cerrandose inmediatamente y regresando el primer
codigo de la tabla
Este es el codigo de la columna que llama para verificar el codigo
ingresado:
METHOD DetalleColumn1PostEdit( oSender, Value, lCanceled, nKey ) CLASS noco
LOCAL mREG := {}
LOCAL mCodigo := Value
LOCAL oBro := ::oDetalle // este es el browse principal tipo array
LOCAL mDESCRIP, mTIPO, mGRUPO, mCONCEPTO, oConcB
// BUSCA LA COSA
if !lCanceled
IF [consiguio el valor]
// popula la fila
oBro:SetValue(2,mREG[2])
ELSE // NO ENCUENTRA DEBE BUSCAR UNO
PRIVATE mDevo := ''
// AQUI ABRE EL BROWSE DE BUSQUEDA
oConcB := ConcBusca():New()
oConcB:oSQLQuery1:oDataSource := oCon
oConcB:oSQLQuery1:lOpen := .T.
oConcB:ShowModal()
// POPULA LAS COLUMNAS
oBro:SetValue(1,mREG[1])
ENDIF
ENDIF
RETURN Nil
en la tabla de busqueda tengo este metodo y es igual al metodo de on
doble click
METHOD DBBrowse1KeyUp( oSender, nKey, nFlags ) CLASS concbusca
if nKey = 13
mDEVO := oSender:aCols[1]:Value
::Close()
endif
RETURN Nil
Si quito este ultimo metodo y lo dejo con doble click solamente,
funciona pero quiero poder seleccionar el registro con enter tambien, el
problema es que al presionar enter en el edit con un valor no valido me
abre el browse e inmediatamente se sale devolviendome el valor del
primer registro.
Saludos
Gracias
Explico de nuevo, la idea es hacer un browse editable de manera de que
cuando entro el codigo en la columna codigo el sistema busque en otra
tabla si el mismo existe en caso de que no me abra una ventana con la
tabla de codigos en un browse (es un lookup) desde el cual pueda
seleccionar uno con dobleclik, todo funciona bien hasta que se me
ocurrio que el cliente ademas de seleccionar el codigo con dobleclick
pudiera hacerlo con enter para evitar el mouse, entonces lo que ocurre
es que en el primer browse le da enter y abre el segundo browse
(busqueda) pero este ultimo por algun motivo??? reconoce el evento
OnKeyUp y toma el enter cerrandose inmediatamente y regresando el primer
codigo de la tabla
Este es el codigo de la columna que llama para verificar el codigo
ingresado:
METHOD DetalleColumn1PostEdit( oSender, Value, lCanceled, nKey ) CLASS noco
LOCAL mREG := {}
LOCAL mCodigo := Value
LOCAL oBro := ::oDetalle // este es el browse principal tipo array
LOCAL mDESCRIP, mTIPO, mGRUPO, mCONCEPTO, oConcB
// BUSCA LA COSA
if !lCanceled
IF [consiguio el valor]
// popula la fila
oBro:SetValue(2,mREG[2])
ELSE // NO ENCUENTRA DEBE BUSCAR UNO
PRIVATE mDevo := ''
// AQUI ABRE EL BROWSE DE BUSQUEDA
oConcB := ConcBusca():New()
oConcB:oSQLQuery1:oDataSource := oCon
oConcB:oSQLQuery1:lOpen := .T.
oConcB:ShowModal()
// POPULA LAS COLUMNAS
oBro:SetValue(1,mREG[1])
ENDIF
ENDIF
RETURN Nil
en la tabla de busqueda tengo este metodo y es igual al metodo de on
doble click
METHOD DBBrowse1KeyUp( oSender, nKey, nFlags ) CLASS concbusca
if nKey = 13
mDEVO := oSender:aCols[1]:Value
::Close()
endif
RETURN Nil
Si quito este ultimo metodo y lo dejo con doble click solamente,
funciona pero quiero poder seleccionar el registro con enter tambien, el
problema es que al presionar enter en el edit con un valor no valido me
abre el browse e inmediatamente se sale devolviendome el valor del
primer registro.
Saludos
Gracias