Problema con bLostFocus

triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Problema con bLostFocus

Post by triumvirato »

Tengo el siguiente código:

Code: Select all

   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!
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post 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
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Post by Daniel Garcia-Gil »

intenta esto...

Code: Select all


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()

User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post 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()
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post 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
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

David,

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

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

Antonio Linares
www.fivetechsoft.com
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post 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

   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!
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

Triumvirato:

Posiblemente la solución sea la clase BtnGet.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post 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!
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Post 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
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post 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

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!
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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. :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Post 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.
Post Reply