Page 1 of 1

Actualizar un SAY al estar modificando un GET

PostPosted: Thu May 11, 2006 2:16 pm
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

PostPosted: Thu May 11, 2006 2:28 pm
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.

PostPosted: Thu May 11, 2006 2:59 pm
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 cuantos caracteres 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.

PostPosted: Thu May 11, 2006 5:33 pm
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 cuantos caracteres 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

PostPosted: Thu May 11, 2006 10:00 pm
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 cuantos caracteres 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

PostPosted: Fri May 12, 2006 5:09 am
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

PostPosted: Thu May 18, 2006 9:27 pm
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

PostPosted: Sat May 20, 2006 8:41 am
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.

PostPosted: Tue May 23, 2006 3:50 pm
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.