Mostrando entradas con la etiqueta DataWindow. Mostrar todas las entradas
Mostrando entradas con la etiqueta DataWindow. Mostrar todas las entradas

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)





Crear DataWindow Dinámico


A continuación veremos cómo se crea un DataWindow dinámico de manera fácil y clara.

Para el ejemplo usamos la base de datos pubs de SQL Server 2000, listaremos tres campos de la tabla authors.

Para desarrollar el ejemplo creamos una ventana y dentro de ella creamos un botón llamado cb_1, creamos un datawindow llamado dw_1.

En el evento clicked del botón cb_1 insertaremos el código siguiente:



Ejecutamos el programa y el resultado debería ser similar a la siguiente imagen.