| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 05 Nov, 2013 12:48 pm Asunto: Fijar columnas en un TListView |
|
|
¿Qué puedo hacer para que el ancho de las columnas en un TListView no pueda cambiarse en tiempo de ejecución con el cursor del ratón cuando se muestra la cabecera de las mismas? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Mar 03 Dic, 2013 3:03 pm Asunto: |
|
|
| Código: |
Object Inspector -> Columns
...
MaxWidth -> 200
...
MinWidth -> 200
...
Width -> 200
|
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Vie 31 Jul, 2015 10:24 am Asunto: |
|
|
Llevo tiempo queriendo mejorar este "problema" y por mas que leo no lo consigo, pero he visto listviews donde al poner el cursor entre la columnas no cambia el cursor, es decir, no te da opción a estirar ni acortar la columna, aunque, usando la solución de Felip, vuelvan a su tamaño original
Alguien sabe como evitar que se modifiquen las columnas en un listview? pero sin posibilidad de estirar por parte del user
Microsoft daba una "solución", que no entendí, interceptando mensajes
| Cita: | puedes subclasificar el 'ListView' e interceptar el mensaje
"HDN_BEGINTRACK", en ese punto podrás denegar su redimensionamiento. En el
siguiente enlace encontrarás un completo ejemplo que te enseñará eso y más:
· Visual Basic Subclassing Routines
WM_NOTIFY: Detect Sizing Notifications from a ListView ColumnHeader
http://vbnet.mvps.org/index.html?code/subclass/lvheadernotifications.htm |
Gracias y saludos |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Mar 04 Ago, 2015 4:40 am Asunto: |
|
|
in header:
| Código: | private: // User declarations
void __fastcall ListViewWindowProc(TMessage &Msg);
... |
in Unit:
| Código: | TWndMethod OldListViewProc = NULL;
//----------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
OldListViewProc = ListView1->WindowProc;
ListView1->WindowProc = ListViewWindowProc;
}
//----------------------------------------
void __fastcall TForm1::ListViewWindowProc(TMessage &Msg)
{
if( Msg.Msg == WM_NOTIFY )
{
if( (((NMHDR*)(Msg.LParam))->code == HDN_BEGINTRACKA) ||
(((NMHDR*)(Msg.LParam))->code == HDN_BEGINTRACKW) ||
(((NMHDR*)(Msg.LParam))->code == HDN_DIVIDERDBLCLICKA) ||
(((NMHDR*)(Msg.LParam))->code == HDN_DIVIDERDBLCLICKW) )
{
Msg.Result = TRUE;
return;
}
}
OldListViewProc(Msg);
}
|
|
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Mar 04 Ago, 2015 6:59 pm Asunto: |
|
|
Grandioso. Perfecto.
Era justo lo que quería
Muchísimas gracias Felip
Saludos |
|
| Volver arriba |
|
 |
|