Power Builder - Recorrer las etiquetas tiene un datawindows para

 
Vista:

Recorrer las etiquetas tiene un datawindows para

Publicado por elvis (3 intervenciones) el 14/05/2012 20:09:11
Saludos Todas y Todos.

He visto algunos script para recorrer las columnas de un datawindow, pero veo q no toma en encuenta las etiquetas, yo necesito recorrer todos los elementos del datawindows, columnas y labels para ponerles borde:

dw_1.modify("cliente.border = 2") // campo
dw_1.modify("cliente_t.border = 2") // etiqueta del campo.

Como los puedo recorrer.

li_count=integer(dw_1.describe('datawindow.column.count'))

for li=1 to li_count
ls_column=dw_1.describe('#' + string(li) + '.name')
dw_1.modify(ls_column + ".border = 2") // etiqueta del campo.

next

Pero que tome en cuenta las etiquetas.

Gracias
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Recorrer las etiquetas tiene un datawindows para

Publicado por JeinnerH (646 intervenciones) el 16/05/2012 16:29:48
Y por qué no cambias el borde en el DW de forma manual? Es decir, editas el DW y le cambias el borde a la etiqueta de la columna?

Hay otra forma, incluir una expresión para el borde de la etiqueta algo como:
If(Describe('cliente.border´) = '!2', 2, 0)

O incluso se puede hacer que utilice el mismo atributo del campo:
Expresion Border=Describe('cliente.border')

Saludos.
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

Recorrer las etiquetas tiene un datawindows para

Publicado por elvis (3 intervenciones) el 16/05/2012 16:59:29
Gracias JeinnerH , te cuento mejor que es lo queiro hacer.

Tengo un datawindow q es una configuracion de una impresion, donde el usuario final en la ventana puede mover y colorcar los campos y etiquetas segun el formato de impresion.

Cuesta visulaizar el ancho y el largo de cada campo, ya que hay q trastrearlo con el puntero del mouse por el borde que no tiene hasta saber donde empieza y donde termina, si todoslos campos y etiquetas tienen borde es mucho mas facil saber donde empieza y donde termina el campo para acomodarlo y cambiarlo de tamaño segun la necesidad,

Pero si todos tienen borde, estos brodes saldrian en la impresion, lo que yo deseo es que cuando el usuario esta configurando la impresion tenga un bototn que le de la opcion de mostrar bordes, solo para efectos de configuracion, y cuando guarda el cambio en la configuracion, por código yo oculto los bordes antes de gurdara, para que no se guarden en el formato y no aparezcan en la impresion.

Gracias
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Recorrer las etiquetas tiene un datawindows para

Publicado por JeinnerH (646 intervenciones) el 16/05/2012 17:40:49
Te recomiendo en ese caso que agreges un campo más al SQL del DW, el cual te indicará si se está visualizando el DW para impresión o para modificación.

Dicho campo lo utilizas en la expresión de las etiquetas, entonces, si el campo Modificar_Imprimir, es 1, en ese caso se va a imprimir el DW, por ende, se desactivará el borde.

La expresión en el border de la etiqueta sería algo así: If(Modificar_Imprimir = 1, 0, 2)

No estoy seguro cuáles son los valores para el borde, pero también puedes utilizar el campo Modificar_Imprimir con el valor que necesitas directamente.

Saludos.
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

Recorrer las etiquetas tiene un datawindows para

Publicado por Leopoldo Taylhardat (710 intervenciones) el 21/05/2012 03:46:00
Saludos...

Prueba con esto... espero que te sirva...

// Definir función a la cual se le pasa el dw de proceso y realiza el proceso con las columnas (visibles)
// argumento = "a_dw" y el tipo es datawindow
// Retorna en este caso un número... está como comentario...
string ls_columnas[], ls_nombre
long ll_columnas

//Cantidad y nombre columnas del DW, las almacena en array ls_columnas[]
a_dw.Accepttext()
for ll_columnas = 1 to integer(a_dw.Describe("DataWindow.Column.Count"))
//Posiciona en las columnas visibles y obtiene nombre de estas
if a_dw.SetColumn(ll_columnas) = 1 then
ls_columnas[UpperBound(ls_columnas[])+1] = trim(a_dw.GetColumnName())
end if
next

//Si se tienen columnas...
ll_columnas = UpperBound(ls_columnas[])
if ll_columnas > 0 then
for ll_columnas = 1 to ll_columnas
//Dependiendo del tipo de columna verifica
//Se debe tener en cuenta que el nombre del campo (texto) debe ser el nombre del campo seguido de guion bajo
//mas _t ejem nom_campo_t.text
ls_nombre = a_dw.Describe(a_dw.Describe(trim(ls_columnas[ll_columnas])+".Name") + "_t.text")
if ls_nombre = "!" then
//... proceso porque es texto...(termina en _t)
end if
next
end if
// retorna el numero de columnas procesadas.... o lo que se desee (si es necesario) en este caso retorna un número...
//return(...número...ej.: ll_columnas)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar