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 para que copie/pegue
Nota: No olvidar definir los parámetros según la imagen mostrada.
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:
ME SALE UN ERROR ... sobr algo de array boundary :s me ayudas?
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!!
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!!
no hay la segunda imagen
Publicar un comentario