Power Builder - usando modify y describe

 
Vista:

usando modify y describe

Publicado por amilcar (327 intervenciones) el 29/10/2003 23:34:21
hola a todos, tengo esta duda.
en mi aplicacion tengo varios dw tabular con un color de fondo determinado y campos en otro o text etc....etc.
ahora bien cuando mando a imprimir quiero que se imprima en blanco y negro, por varias razones.
hice una funcion ,(usando describe y modify) para cambiar el color de los campos,del fondo del dw etc. pero como hago para leer compute object, o diferentes text como titulos, leyendas etc desde dicha funcion, ya que los tengo en varios dw. y al momento de correr la funcion no conozco el nombre que posee c/u de ellos.
o hay alguna otra forma de hacerlo , espero haber sido claro
gracias
un saludo desde argentina
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:usando modify y describe

Publicado por Oscar (1178 intervenciones) el 30/10/2003 04:49:32
Para leer los títulos de las columnas, así como los nombres de las columnas (incluyendo computed field), puedes emplear:

string ls_reporte
ls_reporte = dw_1.Describe("DataWindow.Objects")

//Al imprimir el resultado
st_1.Text=ls_reporte

Se observa, por ejemplo:
codigo_t~nombre_t~t_1
codigo~nombre~compute_1

Luego, supongo (especularé un poco), quizás quieras modificar el color de fondo de una columna llamada compute_1. Tendrías que buscarla en la cadena ls_reporte con la función:
Match. Si la halla devuelve True.

Posteriormente, podrías usar la función Pos, que devuelve la posición de una cadena dentro de otra cadena y finalmente, la función Mid que permite obtener de una cadena N caracteres a partir de una determinada posición.

Cuando ya tengas el nombre de nuestra columna (compute_1), ya puedes modificar su fondo con la funcióm Modify o con la notación punto. Es decir:

* Con Modify:
string ls_fondo
ls_fondo = "compute_1.Background.Color=" + String(RGB(255, 0, 0))
dw_1.Modify("compute_1.Background.Mode=0")//que no sea opaco
dw_1.Modify(ls_color)

* O con la notación punto, que es más simple:
dw_1.Modify("compute_1.Background.Mode='0'")
dw_1.Object.compute_1.Background.Color = RGB(255, 0, 0)

En fin, quizá haya otra forma simple.
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

RE:usando modify y describe

Publicado por Miguel Angel (64 intervenciones) el 30/10/2003 11:57:46
Yo para esos casos, simplemente utilizo otro datawindow para el reporte impreso. Este lo hago sin colores, y con el tamaño de hoja apropiado.

No tengo que ocuparme en hacerle un retrieve, ni en introducir datos ni nada de nada ya que uso la opción sharedata, por lo que todo lo que hay en un dw estará en el otro...

La verdad es que es mucho mas facil y rápido que usar describes y modifies, mas facil de mantener y no es mas costoso en memoria ni tiempo de ejecución (probablemente menos).

Espero que te sirva,

Miguel Angel
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