Hola,
No encuentro la forma de quitar la marca de direccion de ordenado en la cabecera del ListBox.
¿Alguna sugerencia?.
Saludos
Rafael
Hola,
No encuentro la forma de quitar la marca de direccion de ordenado en la cabecera del ListBox.
¿Alguna sugerencia?.
Saludos
Rafael
Me imagino que estás buscando la opción para el ListBox Desktop, por ejemplo un ListBox con 3 columnas, para que no se pueda ordenar ninguna de las 3 y no salga la marca, puedes poner el siguiente código en el Open even del ListBox:
ListBox1.ColumnSortTypeAt(0) = ListBox.SortTypes.NotSortable
ListBox1.ColumnSortTypeAt(1) = ListBox.SortTypes.NotSortable
ListBox1.ColumnSortTypeAt(2) = ListBox.SortTypes.NotSortable
Efectivamente, es para un ListBox Desktop.
Quiero que se pueda ordenar haciendo click en la cabecera del listbox pero que pueda quitar la marca.
Lo que ocurre es que una vez ordenado y con la marca de direccion puesta, vuelvo a rellenar el listbox con datos nuevos y la marca se sigue quedando puesta.
Hola @Rafael_Rivera_Durán,
Puedes hacerlo personalizando el dibujado de las cabeceras del Listbox (capacidad disponible a partir de Xojo 2020r1). Puedes encontrar un tutorial sobre esto en https://www.youtube.com/watch?v=-J1xKdCHicA
Hola,
Había pensado en ello pero me parecía que es como matar moscas a cañonazos. Pensaba que habría un pocedimiento más directo y elegante.
En versiones anteriores (muy anteriores) lo solucionaba con:
ListBox.HasHeading = False
ListBox.HasHeading = True
Es decir; quitaba la cabecera y al volver a ponerla había desaparecido la marca. Esto lo he probado en Xojo 2020r1 pero no funciona.
También había pensado en eliminar el ListBox y volver a crearlo cada vez que necesite eliminar la marca. Esto borra la marca, evidentemente, pero es todavía más traumático que el redibujado de la cabecera.
Saludos
Rafael
Me retracto:
ListBox.HasHeading = False
ListBox.HasHeading = True
Lo he vuelto a probar y sí funcionan. La prueba anterior debí de hacerla mal.
Saludos
Rafael
Aún así, creo que desde el punto de vista de recursos y redituado quizá sería mejor optar por personalizar el dibujado de las cabeceras…
A mi me gustaría que la marca de dirección fuera de 3 estados:
si se da otra vez clic tener la opción de regresar el listbox al estado original.
Creo que hay gente que lo ha hecho usando un SQLite en memoria con el contenido del listbox y ellos controlan el contenido y las marcas de dirección.
No es algo que use mucho por lo que no he desarrollado una solución para mi.
Saludos.
Hola,
Realmente, lo que yo hago funciona como tu quieres:
ListBox.HasHeading = False
ListBox.HasHeading = True
Con estas dos líneas se eliminan las marcas ascendente/descendente.
El funcionamiento es:
Click en cabecera: Poner/cambiar la marca de dirección que corresponda y ordenar por la columna.
Click en botón de listado por defecto: Eliminar las marcas y reponer el listado original.
El SQL lo utilizo para ordenar columnas de valor o de fecha, manteniendo la marca de dirección de la columna.
Saludos
Rafael
Hola,
Estoy probando el dibujado de las cabeceras.
Lo que quiero mejorar es que tengo algunas columnas que no tienen nada más que un caracter de ancho y, evidentemente, no queda espacio para la marca de dirección de ordenado, con lo que no se identifica claramente la columna por la que está ordenado el ListBox.
La solución que se me ocurre, utilizando el dibujado de las cabeceras, es cambiar el color del título de la cabecera de la columna implicada. Lo consigo, pero ya no se dibujan las marcas de dirección. A esto se le llama desvestir a un santo para vestir a otro.
Por cierto; no puedo cambiar el tamaño de la fuete para la cabecera desde el ID del inspector sin que se cambie para todo el listbox, aunque sí puedo cambiarlo desde el dibujado de las cabeceras.
Saludos
Rafael