首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi TListView 列標標題列扁平化 (移除 3D 立體邊框)

     編輯:Delphi

效果

將 TListView 的欄標標題列從預設立體 (Raised) 改為扁平 (Flat) 風格,視覺更現代化。

原理

  1. 取得 ListView 內部 Header 控件代碼:SendMessage(Handle, LVM_GETHEADER, 0, 0)。
  2. 讀取 Header 視窗樣式:GetWindowLong(hHeader, GWL_STYLE)。
  3. 切換 HDS_BUTTONS (值 $0002) 樣式位:Style := Style xor $2。
  4. 回寫樣式並重繪:SetWindowLong + SetWindowPos。

完整程式碼

unit Unit1;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const LVM_GETHEADER = $1000 + 31;
var hHeader: THandle; Style: DWORD;
begin
  hHeader := SendMessage(ListView1.Handle, LVM_GETHEADER, 0, 0);
  Style := GetWindowLong(hHeader, GWL_STYLE);
  Style := Style xor $2;  // 切換 HDS_BUTTONS
  SetWindowLong(hHeader, GWL_STYLE, Style);
  SetWindowPos(ListView1.Handle, 0, 0, 0, 0, 0,
    SWP_NOZORDER or SWP_NOSIZE or SWP_NOMOVE or SWP_DRAWFRAME);
end;

end.

說明

  • 需在 uses 加入 CommCtrl (或 ComCtrls 已包含)。
  • 點擊按鈕即可在立體/扁平之間切換。
  • 同樣技巧可應用於 THeaderControl 等含 Header 的控件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved