Cambiar picture de un get despues de activar un dialogo

Post Reply
DanielPuente
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina
Contact:

Cambiar picture de un get despues de activar un dialogo

Post by DanielPuente »

Amigos:

En un dialogo de carga de articulos a facturar, con cantidad, precio unitario, etc, necesito cambiar el picture del precio unitario de 2 o 4 digitos para los decimales segun el rubro que tenga el articulo que se esta facturando (si es combustible necesito 4 digitos, sino 2).

Esto no funciona:

OT:cPicture:=IF(cRub==1,"999,999.9999","999,999.99")

Por supuesto en la funcion donde se valida el articulo se actualiza esa variable pero no el picture del get, por mas :refresh(), :settext() o lo que sea que se haga con el.

Necesito algun metodo que "redefina" el get para que se entere que cambio el picture.

Saludos,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Este es un trozo de código de uno de mis programas:

cPic1 := IF(nEuro=1,"@E 9,999.99","@E 999,999")
cPic2 := IF(nEuro=1,"@E 9999.99" ,"@E 999999" )

DEFINE DIALOG oDLct RESOURCE "CUOTAS2" OF oDlg PIXEL FONT oFnt

REDEFINE GET aGet[1] VAR oGet1 ID 134 OF oDLct ;
WHEN { || aGet[1]:oGet:Picture:=cPic2 , .T. } ;
VALID { || aGet[1]:oGet:Picture:=cPic1 , .T. }

...

y me funciona perfectamente.

Fijate que en _, la cantidad de nueves es la misma, quizá esté ahí tu problema. Por si acaso, inicializa las variables con 'o.oo' en lugar de con '0', hay veces que da problemas con los decimales si no se han inicializado adecuadamente.
Nos Gusta Programar
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

Si lo que necesitas es definirlos después que el Dialogo, entonces a lo mejor tendrás que hacerlo dentro de una funcion de inicalización

ACTIVATE DIALOG oDlg ON INIT MiFuncionDeIni(oGet)
...
function MiFuncionDeIni(oGet)
oGet:oGet:Pìcture := .....
RETURN NIL

Aunque en teoría no es necesario.

Por cierto, te has dado cuenta que es oGet:oGet:Picture Y NO oGet:cPicture !!! reminicencias de la clase GET de CLIPPER.
Nos Gusta Programar
DanielPuente
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina
Contact:

Post by DanielPuente »

Manuranos:
te has dado cuenta que es oGet:oGet:Picture Y NO oGet:cPicture !!!
Ahi estaba la clave, tantos años programando en fw y recien me entero. Usaba :oGet:picture, oGet:cPicture,oGet:cPict y todo daba error, y eso que mire los fuentes en tget.prg.

Muchas gracias, me solucionastes el problema. Quedo:

IF CRUB==1
OT:CPICTURE:='999,999.9999'
oPuni:oGet:Picture:=OT:CPICTURE
oPuni:Refresh()
ELSE
OT:CPICTURE:='999,999.99'
oPuni:oGet:Picture:=OT:CPICTURE
oPuni:Refresh()
ENDIF

Y funciona perfecto.

Saludos,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
Post Reply