Marca de direccion del Listbox

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… :wink:

A mi me gustaría que la marca de dirección fuera de 3 estados:

  • original: sin orden
  • ascendente: con su marca
  • descendente: con su marca

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:

  • ascendente: con su marca
  • descendente: con su marca
    Estas dos opciones se realizan de forma estándar cada vez que pulsas la cabecera:

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