Actualizar un SAY al estar modificando un GET

Post Reply
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Actualizar un SAY al estar modificando un GET

Post by Marcelo Via Giglio »

Holas,

tengo un problemita, tengo definido un GET

REDEFINE GET oGet VAR cNota ID 101 OF oDlg
REDEFINE SAY oSay VAR cLen ID 102 OF oDlg

oGet:bChange := {|| cLne := STR( 300 - LEN( ALLTRIM( cNota ))), oSay:refresh() }

he probado oSay:setText( cLen ) mas sysrefresh() tambien say:paint() todo en el bloque
bChange del GET pero el SAY no se actualiza, pero si pongo un msginfo() dentro el bloque recien se actualiza, alguna sugerencia para que funcione esto

saludos

Marcelo
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post by Manuel Valdenebro »

Marcelo,

La clase TGET (creo) actualiza un Get despues del siguiente GET.- Si te parece, prueba a ponerle un Get a continuación de prueba. Si te actualiza el SAY una vez pasado este Get de prueba, hemos dado en el clavo. En este caso tienes que modificar la clase TGET.

Si este fuera el caso, dímelo y comentamos que lineas hay que modificar en el TGET.
Un saludo

Manuel
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Post by Marcelo Via Giglio »

Manuel,

gracias por responder, pero mi problema es de actualizacion del SAY en el momento que escribo en el GET, lo que especificamente deseo hacer es que mientras escriben en el GET se informe _ quedan libres para escribir en la variable asociada al GET.

saludos

Marcelo
Manuel Valdenebro wrote:Marcelo,

La clase TGET (creo) actualiza un Get despues del siguiente GET.- Si te parece, prueba a ponerle un Get a continuación de prueba. Si te actualiza el SAY una vez pasado este Get de prueba, hemos dado en el clavo. En este caso tienes que modificar la clase TGET.

Si este fuera el caso, dímelo y comentamos que lineas hay que modificar en el TGET.
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post by Manuel Valdenebro »

Marcelo,
El siguiente código lo he probado y funciona perfectamente. A medida que voy escribiendo el GET simultaneamente me dice en el SAY _ quedan. Si a tí no te funciona, tienes que cambiar la clase TGET:


@ 0.8, 1.0 SAY "TITULAR 1:"
@ 1.0, 8.0 GET oGet1 VAR cNombre OF oDlg ;
ON CHANGE (cLen := STR (300-LEN(ALLTRIM(cNombre))), ; oDlg:UPDATE())

@ 2.0, 1.0 SAY cLen OF oDlg SIZE 40,10 UPDATE
Un saludo

Manuel
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Post by Marcelo Via Giglio »

Manuel,

gracias, pero tu ejemplo no funciona aqui, seguro mi problema es la version de FWH que estoy utilizando, la mia es la version 2.6 de abril de 2005.

Bueno ni modo, vere que puedo encontrar en el codigo fuente

gracias

Marcelo
Manuel Valdenebro wrote:Marcelo,
El siguiente código lo he probado y funciona perfectamente. A medida que voy escribiendo el GET simultaneamente me dice en el SAY _ quedan. Si a tí no te funciona, tienes que cambiar la clase TGET:


@ 0.8, 1.0 SAY "TITULAR 1:"
@ 1.0, 8.0 GET oGet1 VAR cNombre OF oDlg ;
ON CHANGE (cLen := STR (300-LEN(ALLTRIM(cNombre))), ; oDlg:UPDATE())

@ 2.0, 1.0 SAY cLen OF oDlg SIZE 40,10 UPDATE
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post by Manuel Valdenebro »

Marcelo,

Si el código anterior no funciona, estoy casi seguro, que el problema está en la clase TGET. Yo lo tuve hace tiempo y lo solucione gracias a LKM, añadiendo una línea en TGET en el Method EditUpdate():

METHOD EditUpdate() CLASS TGet

if ::oGet:HasFocus
::DispText()
::oGet:Assign() //LKM actualiza buffer actual
endif

::SetPos( ::oGet:Pos )

return nil
Un saludo

Manuel
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Post by Marcelo Via Giglio »

Manuel,

gracias, esta modifcacion al la clase qet soluciono mi problema, seguro que en las versiones mas actuales de FW, ya esta solucionado

saludos

Marcelo
Manuel Valdenebro wrote:Marcelo,

Si el código anterior no funciona, estoy casi seguro, que el problema está en la clase TGET. Yo lo tuve hace tiempo y lo solucione gracias a LKM, añadiendo una línea en TGET en el Method EditUpdate():

METHOD EditUpdate() CLASS TGet

if ::oGet:HasFocus
::DispText()
::oGet:Assign() //LKM actualiza buffer actual
endif

::SetPos( ::oGet:Pos )

return nil
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Yo creo que el problema está en que evaluas cNote. Prueba a evaluar oGet:cText. O sea:

oGet:bChange := {|| cLne := STR( 300 - LEN( ALLTRIM( oGet:cText ))) }

En cuanto a "oSay:refresh()", creo que no es necesario, no lo he probado, pero nunca me ha hecho falta cuando he actualizado algún SAY.
Nos Gusta Programar
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Post by Marcelo Via Giglio »

Manuramos,

lo que dices es cierto, pero tambien esta bien para mi la correccion de LKM que especifico Manuel

gracias

Marcelo
manuramos wrote:Yo creo que el problema está en que evaluas cNote. Prueba a evaluar oGet:cText. O sea:

oGet:bChange := {|| cLne := STR( 300 - LEN( ALLTRIM( oGet:cText ))) }

En cuanto a "oSay:refresh()", creo que no es necesario, no lo he probado, pero nunca me ha hecho falta cuando he actualizado algún SAY.
Post Reply