Cómo resolver el problema de la altura del encabezado de la barra de título del control TListView
unidad de código Delphi (Pascal) Unidad1
interfaz
usa
Windows, Mensajes; , SysUtils, Variantes, Clases, Gráficos, Controles, Formularios,
Diálogos, ExtCtrls, StdCtrls, ComCtrls Gráficos, controles, formularios,
Cuadros de diálogo, ExtCtrls, StdCtrls, ComCtrls,. CommCtrl;
Tipo
TForm1 = clase(TForm)
TListView
ListView2: TListView
<; p> Etiqueta1: TLabel;Etiqueta2:
procedimiento FormCreate(Remitente: TObject);
procedimiento FormClose(Remitente: TObject; var Acción: TCloseAction);
privado
{ Declaraciones privadas }
público
{ Declaraciones públicas }
fin;
var
Form1: TForm1;
lvhOldProc, lvhNewProc: TFarProc
hHeader:
Implementación
{$R *.dfm}
función LvHeaderNewWndProc(h: THandle; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; p>var
phdl: PDHLayout;
prct: PRect;
pwp: PWindowPos
comenzar
Resultado:= CallWindowProc(lvhOldProc, h, uMsg, wParam, lParam);
si uMsg = HDM_LAYOUT entonces
comenzar
phdl:= PHDLayout(lParam );
prct := PRect(phdl.Rect);
pwp := PWindowPos(phdl.WindowPos);
pwp.cy := pwp. cy 10; // La altura predeterminada del encabezado es 17, cámbiela a 17 10 = 27;
prct.top := pwp.cy 2; /p>
end p>
end;
procedimiento TForm1.FormCreate(Remitente: Sentate);
Procedimiento TForm1.FormCreate(Remitente: Sentate);
tate);
Fin. FormCreate(Remitente: TObject);
comenzar
hHeader:= ListView_GetHeader(ListView1.Handle);
lvhOldProc.= FARPROC(GetWindowLong(hHeader, GWL_WNDPROC) );
SetWindowLong(hHeader, GWL_WNDPROC, Longint(@LvHeaderNewWndProc));
fin
procedimiento TForm1.FormClose(Remitente: TObject; var Acción: TCloseAction);
comenzar
SetWindowLong(hHeader, GWL_WNDPROC, Longint(lvhOldProc));
end;
end. p>p>