用户调整listview的column的width处理

需要截获LVM_SETCOLUMN消息。例子:
unit   Unit1;

interface

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

type
    TMyListView   =   class(TListView)
    protected
        procedure   LVMSETCOLUMN(var   Message:   TMessage);
            message   LVM_SETCOLUMN;
    end;
    TForm1   =   class(TForm)          
        Button1:   TButton;
        Edit1:   TEdit;
        procedure   Button1Click(Sender:   TObject);            
    end;

var
    Form1:   TForm1;

implementation

{$R   *.dfm}

{   TMyListView   }

procedure   TMyListView.LVMSETCOLUMN(var   Message:   TMessage);
var
    Lv:   PLVColumn;
begin
    inherited;
    Lv   :=   Pointer(Message.LParam);
    if   LVCF_WIDTH and   Lv.mask   <>   0   then
        Form1.Edit1.Text   :=   '第 '+IntToStr(Message.WParam)+ '列宽度改变为: '+IntToStr(Lv.cx);
end;

procedure   TForm1.Button1Click(Sender:   TObject);
var
    MyListView:   TMyListView;
begin
    MyListView   :=   TMyListView.Create(Self);
    MyListView.Parent   :=   Self;
    MyListView.ViewStyle   :=   vsReport;
    MyListView.Columns.Add.Caption   :=   'AA ';
    MyListView.Columns.Add.Caption   :=   'BB ';
end;

end.
posted @ 2012-09-05 11:09  马儿快跑  阅读(570)  评论(0编辑  收藏  举报