Dar formato a Datawindow

Tengo un inconveniente como puedo establecer el tamaño de fuente de texto de las columnas, el ancho de columnas así como el borde de las columnas(si la celda contiene un valor 0 por ejemplo no mostrar borde) en Datawindow tipo NUP creado dinámicamente.
Con la consulta
sql="select nodos from cajas" // y
(Rows_Per_Detail=5) //ejemplo 5 columnas
Estuve probando y estas propiedades se puden cambiar mediante mediante esta sentencia (tamaño de texto)
dw_1.object.nodos_1.font.height=8
Donde nodos_1 se refiere a la primera columna generada en el DW nodos_2 para la segunda y así.., pero como le especificaría a las otras columnas si de principio no se cuantas coluumnas van a ver, supongo que debe de haber una propiedad que modifique las columnas en forma general.

1 respuesta

Respuesta
1
Existen una función que te informan del nombre de cada una de las columnas que posee un data window sin ni siquiera conocerlas de antemano,
Describe()
Esta función es propia del datawindow y te informa de todos los objetos internos de esta y sus propiedades.
Un ejemplo para poder conocer el nombre de cada una de las columnas.
INTEGER li_col
INTEGER li_for
STRING ls_column_name
li_col = dw_1.object.column.count
FOR li_for = 1 TO li_col
ls_column_name = DESCRIBE('#'+TRIM(li_for)+'.name')
MESSAGE('columna '+STRING(li_for), ls_column_name)
NEXT
En este caso la función DESCRIBE me informa de el nombre de la columna según el numero de intentar, sin embargo esta función tiene una infinidad de variantes las cuales te propongo las veas personalmente en la ayuda online de power builder, en la cual encontraras ejemplos, variantes, etc.
La función contraria se llama MODIFY() en esta encuentras como modificar las propiedades de cada columna por ejemplo, para cambiar el alto de la columna 1 seria más o menos así
STRING ls_column_name
ls_column_name = DESCRIBE('#1.name')
MODIFY(ls_column_name+'.height = 125')
Y así para cada propiedad cualquiera que esta fuera.
Aunque creo que no puedes crear dinámicamente un objeto dentro del datawindow object, se me ocurre que podrías incluir en el select de la creación dinámica un valor cualquiera, por ejemplo 1, 'a', etc.
Esto deberá tomarse en cuenta como otra columna más, (esa es mi teoría), a esta nueva columna le modificas las propiedades de ubicación, o sea en lugar de estar en la parte de detalle, obligala a esta en la parte del pie, creo que incluso puedes crear una operación por ejemplo a+b donde a y b son columnas, y esto te va a crear un campo computado.
Con respecto a el cambio de color, la manera sencilla de cambiar un color es por medio de la función RGB(), sin embargo esta función devuelve un numero que tiene relación con los 3 parámetros que estos corresponden a ROJO, VERDE. AZUL. Cada uno tiene un valor que va de 0 a 255, a más valor más claro, la fórmula es la siguiente
65536 * Blue+ 256 * Green+ Red
Realmente puedes incluir el resultado de la combinación de tus colores en la fórmula y el numero resultante es el que puedes colocar como el color nuevo.
Espero esto pueda ser de utilidad para resolver tu problema
saludos
agdsys

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas