RE:ORDENAR las DW con Efectos
Ese efecto que mencionas sólo afecta a los controles normales de una ventana; pero no toma efecto en el control DW. Por eso, se podría utilizar un control ListView. O sea:
1. Primero debes insertar un control lv_1. Luego sobre él, un control DW.
2. En el evento open de la ventana colocas:
dw_1.SetTrans(Sqlca)
dw_1.Retrieve()
//Mostrar columnas en el lv_1
lv_1.view=ListViewReport!
//Definimos la etiqueta de la columna, alineación y ancho
lv_1.AddColumn("Nombre",center!,300)
lv_1.AddColumn("Tamaño",center!,200)
3. Hasta ahora tenemos las columnas; pero no el efecto. Para que los controles de PB, tengan el estilo Windows XP (ojo sólo funciona con Win XP), debes ver el post:
http://www.lawebdelprogramador.com/news/mostrar_new.php?id=73&texto=Power+Builder&n1=170566&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
4. Ahora, para ordenar las columnas del DW, se debe programar en el evento Columnclick del lv_1.
Nota: Para ordenar las columnas del DW al dar clic en su encabezado se habló en el foro. Nosotros simplemente averiguaremos la etiqueta, alineación y ancho de las columnas del lv_1 (quizás necesites para que al variar el ancho de estas columnas, también varíen del DW). Ejemplo:
string ls_label, ls_align
integer li_width
alignment la_align
ii_col = column
This.GetColumn(column, ls_label, la_align, li_width)
sle_info.Text = String(column) &
+ " " + ls_label &
+ " " + ls_align &
+ " " + String(li_width)
Quizás existan otras ideas más simples (al concluir esta nota, se me ocurre que podrías pegar una imagen en el encabezado de la columna del DW y al pasar el mouse, podrías sustituirla por otra imagen que tenga una línea naranja); en fin, veamos si existen otras ideas...