當前位置:編程學習大全網 - 源碼下載 - TListView控件的標題欄header高度,該怎麽解決

TListView控件的標題欄header高度,該怎麽解決

壹段代碼真正實現樓主的需求:

Delphi(Pascal) codeunit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, ComCtrls, CommCtrl;

type

TForm1 = class(TForm)

ListView1: TListView;

ListView2: TListView;

Label1: TLabel;

Label2: TLabel;

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

lvhOldProc, lvhNewProc: TFarProc;

hHeader: THandle;

implementation

{$R *.dfm}

function LvHeaderNewWndProc(h: THandle; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;

var

phdl: PHDLayout;

prct: PRect;

pwp: PWindowPos;

begin

Result := CallWindowProc(lvhOldProc, h, uMsg, wParam, lParam);

if uMsg = HDM_LAYOUT then

begin

phdl := PHDLayout(lParam);

prct := PRect(phdl.Rect);

pwp := PWindowPos(phdl.WindowPos);

pwp.cy := pwp.cy + 10; // Header默認高是17,修改成17 + 10 = 27;

prct.top := pwp.cy + 2;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

hHeader := ListView_GetHeader(ListView1.Handle);

lvhOldProc := FARPROC(GetWindowLong(hHeader, GWL_WNDPROC));

SetWindowLong(hHeader, GWL_WNDPROC, Longint(@LvHeaderNewWndProc));

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

SetWindowLong(hHeader, GWL_WNDPROC, Longint(lvhOldProc));

end;

end.

  • 上一篇:怎麽用Amcap照相
  • 下一篇:外賣服務口號
  • copyright 2024編程學習大全網