Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 05-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Angel.Matilla.

.h
Código:
...
class TForm1 : public TForm
{
...
private:	
  void __fastcall ListViewWindowProc(TMessage &Msg);
...
.cpp
Código:
...
TWndMethod OldListViewProc;

__fastcall TForm1::TForm1(TComponent *Owner) : TForm(Owner)
{
  OldListViewProc = ListView1->WindowProc;
  ListView1->WindowProc = ListViewWindowProc;
}

void __fastcall TForm1::ListViewWindowProc(TMessage &Message)
{
  if (Message.Msg == WM_NOTIFY) {
    const NMHDR *phdr = (NMHDR*)Message.LParam;
    if((phdr->code == HDN_BEGINTRACKA) ||
       (phdr->code == HDN_BEGINTRACKW) ||
       (phdr->code == HDN_DIVIDERDBLCLICKA) ||
       (phdr->code == HDN_DIVIDERDBLCLICKW)) {
      Message.Result = TRUE;
      return;
    }
 } 
 OldListViewProc(Message);
}
...
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 05-11-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Muchas garcias ecfisa. Funciona a la perfección salvo que me da un mensaje de error 'Cannot make a visible window modal', y eso sí que no sé como resolverlo. Estoy usando este código:
Código:
void __fastcall TfColegio::Button1Click(TObject *Sender)
{
     AnsiString cAux;
     
     Query->Close();
     Query->SQL->Text = "SELECT Formacion, Registro FROM Formacion ORDER BY Formacion";
     Query->Open();

     Application->CreateForm(__classid(TfAyuda), &fAyuda);
     for (; !Query->Eof; Query->Next())
     {
          pItem = fAyuda->Ayuda->Items->Add();
          pItem->Caption = Query->FieldByName("Formacion")->AsString;
          pItem->SubItems->Add("");
          pItem->SubItems->Add(Query->FieldByName("Registro")->AsInteger);
     }
     pItem = NULL;

     fAyuda->Refresh();
     fAyuda->ShowModal();
     delete fAyuda;
}
//---------------------------------------------------------------------------
Y es en ese fAyuda es donde he puesto el código que me indicas:
Código:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Ayuda.h"
//---------------------------------------------------------------------------

#pragma package(smart_init)
#pragma resource "*.dfm"
TfAyuda *fAyuda;

TWndMethod OldListViewProc;
//---------------------------------------------------------------------------

__fastcall TfAyuda::TfAyuda(TComponent* Owner)
     : TForm(Owner)
{
     OldListViewProc   = Lista->WindowProc;
     Lista->WindowProc = ListViewWindowProc;
}
//---------------------------------------------------------------------------

void __fastcall TfAyuda::ListViewWindowProc(TMessage &Message)
{
     if (Message.Msg == WM_NOTIFY)
     {
          const NMHDR *phdr = (NMHDR*)Message.LParam;
          if ((phdr->code == HDN_BEGINTRACKA) || (phdr->code == HDN_BEGINTRACKW) ||
              (phdr->code == HDN_DIVIDERDBLCLICKA) || (phdr->code == HDN_DIVIDERDBLCLICKW))
          {
               Message.Result = TRUE;
               return;
          }
     }
     OldListViewProc(Message);
}
//---------------------------------------------------------------------------

Última edición por Angel.Matilla fecha: 05-11-2013 a las 17:47:28.
Responder Con Cita
  #4  
Antiguo 05-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Angel.Matilla.

Pero ese error no tiene que ver con el código para evitar el redimensionado de las columnas del ListView.
Se produce por que estas intentando mostrar el form "fAyuda" de forma modal, teniendo este último la propiedad Visible igual a True.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 05-11-2013 a las 21:56:26.
Responder Con Cita
  #5  
Antiguo 06-11-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Se produce por que estas intentando mostrar el form "fAyuda" de forma modal, teniendo este último la propiedad Visible igual a True.
Gracias por contestar. No acabo de entender esto que me dices de que la propiedad Visible es true; ¿la del form?. Además he probado con ShowModal() y con Show() y en ambos casos me da error
Responder Con Cita
  #6  
Antiguo 06-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Si, me refiero a la propiedad visible del form, eso indica el error que estas mencionando.

Te adjunto un ejemplo en el cuál podes cambiar la propiedad Visible del form antes de mostrarlo mediante un TCheckBox.

Podrás ver que se muestra correctamente de forma modal cuando la propiedad Checked del CheckBox tiene valor false y provoca una excepción de modo contrario.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Angel.Matilla.zip (5,5 KB, 3 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 06-11-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Muchas gracias.
Responder Con Cita
  #8  
Antiguo 06-11-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Te adjunto un ejemplo en el cuál podes cambiar la propiedad Visible del form antes de mostrarlo mediante un TCheckBox.

Podrás ver que se muestra correctamente de forma modal cuando la propiedad Checked del CheckBox tiene valor false y provoca una excepción de modo contrario.
Una vez más muchas gracias. He probado tu código y efectivamente funciona a la perfección pero si marco el checkbox (checked = true) me da el mismo error que comentaba antes. No obstante voy a ver de adaptarlo a mi proyecto.
Responder Con Cita
  #9  
Antiguo 06-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Angel.Matilla Ver Mensaje
Una vez más muchas gracias. He probado tu código y efectivamente funciona a la perfección pero si marco el checkbox (checked = true) me da el mismo error que comentaba antes. No obstante voy a ver de adaptarlo a mi proyecto.
Hola Angel.

Así es, y el motivo de haber incluido el TCheckBox fue precisamente para que pudieras comprobar que el error se provocaba mostrando al formulario "fAyuda" de forma modal, cuando su propiedad Visible era true.

Fijate que si lo mostras de forma no modal ( fAyuda->Show() ; ), no vas a obtener ningún error ya sea que el CheckBox fije su propiedad Visible a true o false.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Bloquear columnas TListView yomismo24 Varios 2 17-09-2008 19:24:58
Columnas de un TListView PTW Varios 1 27-06-2005 17:19:43
Fijar las toolbars ibstk Varios 4 09-02-2005 03:37:49
Fijar columnas en un DBGRID negama Conexión con bases de datos 0 29-09-2003 20:02:25
Fijar Bandas noir Impresión 2 15-05-2003 17:38:28


La franja horaria es GMT +2. Ahora son las 19:28:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi