Actualizar un SAY al estar modificando un GET

Actualizar un SAY al estar modificando un GET

Postby Marcelo Via Giglio » Thu May 11, 2006 2:16 pm

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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Postby Manuel Valdenebro » Thu May 11, 2006 2:28 pm

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
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby Marcelo Via Giglio » Thu May 11, 2006 2:59 pm

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.
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Postby Manuel Valdenebro » Thu May 11, 2006 5:33 pm

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
Un saludo

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

Postby Marcelo Via Giglio » Thu May 11, 2006 10:00 pm

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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Postby Manuel Valdenebro » Fri May 12, 2006 5:09 am

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
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby Marcelo Via Giglio » Thu May 18, 2006 9:27 pm

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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Postby manuramos » Sat May 20, 2006 8:41 am

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
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby Marcelo Via Giglio » Tue May 23, 2006 3:50 pm

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.
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 8 guests