Power Builder - Ayuda con objetos instanciados

 
Vista:
sin imagen de perfil

Ayuda con objetos instanciados

Publicado por Rogger (144 intervenciones) el 03/12/2008 23:55:41
Buen dia a todos los foristas, si alguien me pudiera ayudar.
y gracias Jancarlo q me escribio el siguiente post:

http://www.lawebdelprogramador.com/news/mostrar_new.php?id=73&texto=Power+Builder&n1=515414&n2=1&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0 ,

si me pudieras dar mas luces, o alguien mas por fa.

Ya tengo los objetos instanciados pero el detalle es q cuando quiero q cambien de color cambian todos, lo q me gustaría hacer es q cambia de color al q le hice clic derecho y le di una opcion, como por ejemplo "Libre", "Ocupado", "Atendiendo" u otra opcion.

Para esto uso un dw donde guardo las caracteristicas del statictext.

para ser más especifico les cuento un poco mas:

tenog al rededor de 27 statictext, lo q quiero hacer es q a cada uno independientemente le dea una opcion y cuanod esto sucede segun el timpo q va transcurriendo se vuelva de color rojo.

para esto he crado una tabla donde guardo el text del objeto instanciado las coordenadas pa ponerlas en una determinada ubicacion y el tiempo donde controlo q cada cierto tiempo se vuelva rojo, pero aun no logro esto.

la idea es q se vuelva totalmente rojo en un tiempo máximo de 20 minutos.

ayudenme por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con objetos instanciados

Publicado por sthif (63 intervenciones) el 04/12/2008 23:10:32
No está al 100% pero funciona:

1-declara las variables

integer ii_tiempo_ini = 30 //duración
integer ii_tiempo_act = 0 //avance
integer ii_timer = 3 //timer se ejecuata según esta variable

2 -crea esta función

long ll_red, ll_green, ll_blue
long ll_dif, ll_count

// valor del color rojo
ll_red = Mod (al_rgb, 256)
al_rgb = al_rgb / 256

// valor del color verde
ll_green = Mod (al_rgb, 256)
al_rgb = al_rgb / 256

// valor del color azul
ll_blue = Mod (al_rgb, 256)

ll_count = round(ii_tiempo_act / ii_timer, 0)

// cuanto falta para que rojo = 255
if ll_red < 255 then
ll_dif = ((255 - ll_red) / ll_count )
if ll_dif < 0 then ll_dif = 1
ll_red = ll_red + ll_dif
end if

// cuanto falta para que green = 0
if ll_green > 0 then
ll_dif = (ll_green/ ll_count )
if ll_dif < 0 then ll_dif = 1
ll_green = ll_green - ll_dif
end if

// cuanto falta para que blue = 0
if ll_blue > 0 then
ll_dif = (ll_blue / ll_count )
if ll_dif < 0 then ll_dif = 1
ll_blue = ll_blue - ll_dif
end if

//retorna nuevo color
return rgb (ll_red, ll_green, ll_blue)

3- En un timer :

if ii_tiempo_act = 0 then
timer(0)
else
st_3.backcolor = of_get_color2(long(st_3.backcolor), ii_tiempo_act)
st_2.backcolor = of_get_color2(long(st_2.backcolor), ii_tiempo_act)
st_1.backcolor = of_get_color2(long(st_1.backcolor), ii_tiempo_act)
ii_tiempo_act = ii_tiempo_act - 3
if ii_tiempo_act < 0 then ii_tiempo_act = 0
st_1.text = string(ii_tiempo_act)
st_2.text = string(ii_tiempo_act)
st_3.text = string(ii_tiempo_act)
end if

4- desencadenar con:
if ii_tiempo_act = 0 then
timer(ii_timer)
ii_tiempo_act = ii_tiempo_ini
end if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar