Pregunta: tengo una Datawindow(DW) y un DropDownListBox (DDLB) con los nombres de la columnas de la DW. ¿Cómo hago para que cuando en el DDLB se seleccione un nombre de columna esta cambie de color en la DW, detacandose de las demás, indicándole al usuario que realizara el filtado de datos por dicha columna? Gracias por la respuesta
1 respuesta
Respuesta de hakuario
1
1
hakuario, Conocimientos en Visual Basic 6 - Power Builder 9/11
Bueno antes de darte una solución que pude realizar, dejame decirte que muy creativa idea la tuya, no se me había ocurrido tal arreglo, jajaa, más que todo porque provoco mi curiosidad y por ende abrir mi pb y empezar a escribir código, pero al final encontré una salida adecuada. //El siguiente codigo lo probe en el DDLB //EVENTO SELECTIONCHANGED //EN ESTE CASO MI DW SE LLAMA DW_CONTROL //ADEMAS los campos que pongas en los items del ddlb deben star en el mismo orden //Que tu dw esto para usar el parámetro index del evento del ddlb, en este caso como //Deseas cambiar el color de las cabeceras de la columnas, //O al menos fue lo que entendí, también mis cabeceras tiene el mismo nombre de las //columnas pero terminan con "_t" por eso concateno mi nombre de columna + "_t" //Ejem.: mi columna se llama "mycolumn" y su cabecera "mycolumn_t" esto lo hace x //Defecto el pb ^^, ojo con la función modify del dw, solo funka con minúsculas //por eso convierto todo a minusculas! string ls_campo,ls_cadena,ls_nombre,ls_color,ls_color_default long ll_columnas int li_col ls_color= '255' //Color Rojo ls_color_default ='0' //Color Negro ll_columnas = long(dw_control.Describe("DataWindow.Column.Count")) for li_col = 1 to ll_columnas setnull(ls_nombre) ls_nombre = lower(trim(dw_control.Describe("#"+ string(li_col) + ".name"))) if li_col = index then ls_cadena = ls_nombre + "_t.color= '" + ls_color + "'" else ls_cadena = ls_nombre + "_t.color= '" + ls_color_default + "'" end if dw_control.modify(ls_cadena) next //Weno pruebalo, a mi me funciona. A lo mejor lo implemento en una de mis aplicaciones, //Es algo vistoso, de repente se podría afinar más, pero funciona, es lo más importante Suerte Saludos! Carlos ^^,!
Oye, gracias por tus palabras de reconocimiento y el tiempo que te has tomado para elaborar la respuesta, sobre todo que das un código con la garantía de q' lo haz probado, eso evita quebraderos de cabeza y permite hacer un análisis más limpio y rapido de la solución dada. Te agradezco y espero que puedas resolver otras interrogantes que me pueda plantear más adelante. Saludos.