2010-04-09 18 views
11

¿Cómo puedo hacer un CListCtrl para redimensionar el ancho de sus columnas automáticamente? Por lo general, cuando un elemento en la lista es demasiado largo, el fondo desaparece de la vista y el usuario tiene que cambiar manualmente el ancho de la columna correspondiente. ¿Hay alguna forma de hacer esto por código?Anchos de columna de cambio de tamaño automático en un CListCtrl

Respuesta

12

Cambiar el tamaño de las columnas de forma automática es fácil:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i) 
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER); 

Esto optimizará las columnas.

+0

Oye, lo probé y parece funcionar bien :) :) Muchas gracias por la respuesta dwo: D – Isuru

+0

Una pequeña pregunta dwo, nunca escuché sobre HeaderControl. ¿Qué es exactamente? Muchas gracias! – Isuru

+0

El control de encabezado es la parte superior del control de lista con los títulos de columna en él. – dwo

1

¿Tiene la opción "Sin desplazamiento"? De forma predeterminada (opción "Sin desplazamiento" desactivada), si un elemento es demasiado largo, aparecerá una barra de desplazamiento.

1

Supongo que se refiere a un control de lista en el modo de informe? Lamentablemente, no hay forma de cambiar automáticamente el tamaño de las columnas. Lo que puede hacer (lo que hago en algunos lugares) es calcular el ancho de las columnas a medida que ingresa los elementos, luego manejar WM_SIZE y cambiar el tamaño de las columnas. Sin embargo, esto provoca cambios que el usuario ha perdido, por lo que es posible que necesite un algoritmo mejor, como el seguimiento si el usuario realizó algún cambio, si es que no lo hizo. No es muy agradable desde una perspectiva de UX, solo lo uso en una cantidad selecta de circunstancias donde el comportamiento tiene sentido en el contexto del resto de la UI.

+0

Sí, eso es exactamente lo que quise decir. Gracias por la respuesta, si no puedo obtener un algoritmo adecuado, manejaré OnSize() para cambiar el tamaño manualmente y le pediré al lector que cambie el tamaño de la ventana. – Isuru

Cuestiones relacionadas