Alternar colores en cada Fila de un DataWindow


A continuación veremos como crear un DataWindow tipo Grid en donde los colores de cada fila se alternen, el objetivo es llegar a tener un DataWindow  que nos muestre un listado tipo Grid donde se alternen los colores.

Este es un ejemplo de un DataWindow Grid con el listado de la tabla authors de la base de datos pubs en SQL Server 2000

Ejemplo de alternar colores


Pues bien para empezar crearemos dos funciones: f_dw_get_objects, f_registros_colores

El código de cada función a continuación:

f_dw_get_objects
El código para que copie/pegue

Nota: No olvidar definir los parámetros según la imagen mostrada. 

//f_dw_get_objects
//Esta función a sido creada por PowerBuilder asi que lo copiamos tal cual.
//Esta funcion retorna todas las columnas contenidas en el DataWindow




string obj_string, obj_holder

int obj_count, start_pos=1, tab_pos, count = 0



obj_string = Describe(dw_arg,"datawindow.objects")

tab_pos =  Pos(obj_string,"~t",start_pos)

DO WHILE tab_pos > 0

obj_holder = Mid(obj_string,start_pos,(tab_pos - start_pos))

     IF (Describe(dw_arg,obj_holder+".type") = obj_type or obj_type = "*") AND &

          (Describe(dw_arg,obj_holder+".band") = band or band = "*") THEN

                count = count + 1

                obj_list[count] = obj_holder

     END IF

     start_pos = tab_pos + 1

     tab_pos =  Pos(obj_string,"~t",start_pos)

LOOP

obj_holder = Mid(obj_string,start_pos,Len(obj_string))

IF (Describe(dw_arg,obj_holder+".type") = obj_type or obj_type = "*") AND &

     (Describe(dw_arg,obj_holder+".band") = band or band = "*") THEN

     count = count + 1

     obj_list[count] = obj_holder

END IF

Return count


f_registro_colores

El código para que copie/pegue

Nota: No olvidar definir los parámetros según la imagen mostrada. 

//Esta funcion toma como parametro el DataWindow y alterna los colores 
string    lista[]

integer   li_nn

integer   li_columnas

long      gl_color_registros



//Esta variable se puede declarar como global

gl_color_registros=RGB(191,223,255) //El color que deseamos


li_columnas=f_dw_get_objects(adw_origen,lista,"column","*")

for li_nn = 1 to li_columnas

     adw_origen.modify(lista[li_nn]+'.background.color="16777215~tif (mod(getrow(),2)=0,16777215,'+string(gl_color_registros) +')"')

next

Ahora en el DataWindow en su evento Constructor() poner el siguiente código:



//Evento constructor del DataWindow
f_registros_colores(this)





5 comentarios:

Unknown dijo...

ME SALE UN ERROR ... sobr algo de array boundary :s me ayudas?

Unknown dijo...

Al crear tu datawindow tienes 4 partes Header, Detail, Summary, Footer, bueno dale click en la barra de Detail luego en sus propiedades eliges la etiqueta Background y la opcion Color al costadito hay un pequeño boton ingresa este codigo
IF( Mod( GetRow(),2) = 0, RGB(255,255,255), RGB(225, 215, 255))
y listo!!

Unknown dijo...

Al crear tu datawindow tienes 4 partes Header, Detail, Summary, Footer, bueno dale click en la barra de Detail luego en sus propiedades eliges la etiqueta Background y la opcion Color al costadito hay un pequeño boton ingresa este codigo
IF( Mod( GetRow(),2) = 0, RGB(255,255,255), RGB(225, 215, 255))
y listo!!

Atafur dijo...

no hay la segunda imagen

Atafur dijo...
Este comentario ha sido eliminado por el autor.

Publicar un comentario