Page 1 of 2

Problema con bLostFocus

PostPosted: Mon Oct 06, 2008 11:22 am
by triumvirato
Tengo el siguiente código:

Code: Select all  Expand view
   REDEFINE GET oGetArticulo VAR cArticulo ID 140 OF oDlg PICTURE '@!S12' UPDATE
   oGetArticulo:bLostFocus := { || oBtnBusArt:Hide(), oBtnGama:Hide(), SetKey( VK_F2, nil ) }
   
   REDEFINE BUTTON oBtnBusArt ID 2060 OF oDlg ACTION Bus_Art( oDlg, oGetArticulo )


Cuando oGetArticulo tiene el foco, pinchamos oBtnBusArt, oGetArticulo pierde foco, ejecuta el bloque de código de oGetArticulo:bLostFocus desde donde se oculta el botón oBtnBusArt y por tanto no se evalúa el ACTION de oBtnBusArt

Alguien sabe como puedo solucionar esto? Realmente la metodología que necesito es la descrita, pero evaluándose el ACTION del botón.

Gracias y Saludos!

PostPosted: Mon Oct 06, 2008 4:27 pm
by ADBLANCO
PRUEBA CON bGotFocus (se evalua cuando tiene el foco)

DE TODAS FORMAS, YO MANEJO LAS CONSULTAS EN LINEA ASIGNANDOSELAS A LA TECLA F4

Y HACIENDO LO SIGUIENTE:

REDEFINE GET oGet VAR cGet ID 201 OF oDlg ;
MESSAGE "Coloque Información (F4:Lista)";
PICTURE "@!"
// DEFINICION DE F4->LISTA
bGet:={ || (xGet:=consulta(oGet,"CGETID",oDlg),; // EN consulta.prg (oObjeto,"IDENTIFICADOR",oDlg)
IIF(LEN(ALLTRIM(xGetSel))>0,(oGet:Varput(cGetId),oGet:Refresh()),),;
oGetId:setfocus())}
oGet:bKeyDown := {|nKey| IIF(nKey==VK_F4,EVAL(bGet),)}

ESPERO TE SIRVA DE ALGO

PostPosted: Mon Oct 06, 2008 4:31 pm
by Daniel Garcia-Gil
intenta esto...
Code: Select all  Expand view

REDEFINE GET oGetArticulo VAR cArticulo ID 140 OF oDlg PICTURE '@!S12' UPDATE ;
VALID( oBtnBusArt:hide(), .t.)

REDEFINE BUTTON oBtnBusArt ID 2060 OF oDlg ACTION Bus_Art( oDlg, oGetArticulo )

oGetArticulo:bGotFocus( {|| oBtnBusArt:Show() } )
oBtnBusArt:bLostFocus({|| oBtn:hide() } )

ACTIVATE DIALOG oDlg ON INIT oBtnBusArt:hide()


PostPosted: Mon Oct 06, 2008 4:40 pm
by ADBLANCO
QUIZAS ESTO SE SIRVA

REDEFINE GET oGetArticulo VAR cArticulo ID 140 OF oDlg PICTURE '@!S12' UPDATE ;
VALID( oBtnBusArt:disable(), .t.)

REDEFINE BUTTON oBtnBusArt ID 2060 OF oDlg ACTION Bus_Art( oDlg, oGetArticulo )

oGetArticulo:bGotFocus( {|| oBtnBusArt:Enable() } )

ACTIVATE DIALOG oDlg ON INIT oBtnBusArt:Disable()

PostPosted: Mon Oct 06, 2008 4:44 pm
by ADBLANCO
Y EXACTAMENTE, QUE ES LO QUE QUIERES:
1) QUE DESPLEGUE UN LISTA DE LOS VALORES CUANDO PRESIONES EL BOTÓN?,O
2) QUE SE PRENDA EL BOTON CUANDO HAYAS COLOCADO ALGÚN VALOR EN EL GET

PostPosted: Mon Oct 06, 2008 5:51 pm
by Antonio Linares
David,

El botón lo podrías ocultar desde su propia acción:

REDEFINE BUTTON oBtn ... ACTION ( oBtn:Hide(), ... )

PostPosted: Tue Oct 07, 2008 6:58 am
by triumvirato
Exactamente lo que necesitaba es que ese botón esté sólo presente y activo, mientras estoy en el Get. Es un botón que abre un diálogo de búsqueda para los posibles valores de ese campo. Por tanto, sólo debe estar activo, cuando está el foco en ese Get. Cuando no estás en ese campo, debe estar oculto. Con Enable y Disable, sigue sucediendo lo mismo (si lo sustituyo tal como lo tengo en mi código por los Hide y Show) si lo desactivo desde el oGetArticulo:bLostFocus, que al pulsar el botón, el Get pierde el foco, evalua el oGetArticulo:bLostFocus donde se desactiva el botón y por tanto no ejecuta tampoco la acción del ACTION del botón...
Ahora bien, las soluciones que me habéis planteado, el desactivarlo desde el VALID del oGetArticulo o bien desde ACTION del propio boton me han funcionado perfectamente.

El problema que me surge ahora, es que al ponerle una cláusula VALID en el oGetArticulo y pulsar el botón para buscar, ese cláusula se evalúa y no deja abrirse el diálogo de búsqueda, puesto que el oGetArticulo no tiene un valor válido...

Code: Select all  Expand view
   REDEFINE GET oGetArticulo VAR cArticulo ID 140 OF oDlg PICTURE '@!S12' UPDATE;
   VALID ( oBtnBusArt:Hide(), Clave_Ok( "Art", cArticulo, 1 ) )

   oGetArticulo:bLostFocus := { || oBtnGama:Hide(), SetKey( VK_F2, nil ) }
   
   REDEFINE BUTTON oBtnBusArt ID 2060 OF oDlg ACTION Bus_Art( oDlg, oGetArticulo )


Saudos!

PostPosted: Tue Oct 07, 2008 11:26 am
by Armando
Triumvirato:

Posiblemente la solución sea la clase BtnGet.

Saludos

PostPosted: Tue Oct 07, 2008 2:40 pm
by triumvirato
Armando wrote:Triumvirato:

Posiblemente la solución sea la clase BtnGet.

Saludos


Armando, gracias... no conozco esa clase, no la tengo, estoy con FWH805... puede ser que no la tenga?

Saludos!

PostPosted: Tue Oct 07, 2008 3:03 pm
by Daniel Garcia-Gil
triumvirato wrote:El problema que me surge ahora, es que al ponerle una cláusula VALID en el oGetArticulo y pulsar el botón para buscar, ese cláusula se evalúa y no deja abrirse el diálogo de búsqueda, puesto que el oGetArticulo no tiene un valor válido...


valida el get solo cuando tengas un valor, cuando arroje FALSE el valid borras el contenido del get.
permite que pase con el get vacio y en el SAVE validas que no este en blanco el get.
si no prueba con la suguerencia del btnget, con la version actual de FWH esa funcion viene incluida, es bastante util

PostPosted: Wed Oct 08, 2008 6:51 am
by triumvirato
mcfox wrote:valida el get solo cuando tengas un valor, cuando arroje FALSE el valid borras el contenido del get.
permite que pase con el get vacio y en el SAVE validas que no este en blanco el get.
si no prueba con la suguerencia del btnget, con la version actual de FWH esa funcion viene incluida, es bastante util


Si, algo así había pensado, pero no tengo un "SAVE", por tanto no puedo permitir un valor en blanco. Lo que sí me he dado cuenta es que con un Set Key, no se ejecuta el VALID del Get y lo que necesito es esa misma funcionalidad, que cuando se pulse ese botón, no se haga ese VALID.

Gracias.

PostPosted: Wed Oct 08, 2008 7:52 am
by Antonio Linares
David,

Como te han indicado, puedes probar:

REDEFINE GET ... ACTION ... BITMAP <cBmpName>

y FiveWin construye un botón dentro del propio GET.

PostPosted: Wed Oct 08, 2008 8:01 am
by triumvirato
Antonio Linares wrote:David,

Como te han indicado, puedes probar:

REDEFINE GET ... ACTION ... BITMAP <cBmpName>

y FiveWin construye un botón dentro del propio GET.


Antonio,

Code: Select all  Expand view
REDEFINE GET oGetDescuento VAR alk_dt1w ID 160 OF oDlg PICTURE '@EZ 99.99' UPDATE;
ACTION Bus_Art( oDlg, oGetArticulo ) BITMAP "basket.bmp"


Obtengo el siguiente Error
c:\Fivewin\gesco\ventas.prg(122) Error E0030 Syntax error: "syntax error at 'GET'

Uso FWH805 y creo que no dispongo de esa opción...

Saludos!

PostPosted: Wed Oct 08, 2008 8:04 am
by Antonio Linares
David,

Tienes que descargar una versión más reciente de FWH.

Hoy estoy de viaje en un seminario. Mañana regreso a la oficina y te ayudo en caso de que necesites nuevas claves, etc. :-)

PostPosted: Wed Oct 08, 2008 8:37 am
by triumvirato
Antonio Linares wrote:David,

Tienes que descargar una versión más reciente de FWH.

Hoy estoy de viaje en un seminario. Mañana regreso a la oficina y te ayudo en caso de que necesites nuevas claves, etc. :-)


Antonio,

Muchas gracias. Necesitaré esa ayuda, espero a mañana.