📄 listview_unit.pas
字号:
unit ListView_Unit;
interface
//----建立ListView------
procedure Create_ListView;
implementation
uses
Windows, public_Unit;
const
{-- ListView Style --}
LVS_SHOWSELALWAYS = $0008; //HideSelection
LVS_REPORT = $0001; //报表显示模式
{-- Windows消息 --}
WM_LBUTTONDOWN = $0201; //鼠标左键按下
LVM_INSERTCOLUMN = $101B; //插入ListView列
LVM_SETEXTENDEDLISTVIEWSTYLE = $1036; //修改ListView属性
LVM_GETNEXTITEM = $100C; //取得item标号
{--LVM_SETEXTENDEDLISTVIEWSTYLE参数--}
LVS_EX_GRIDLINES = $0001; //显示细纹网格
LVS_EX_FULLROWSELECT = $0020; //可以选中整行
{-- LVM_GETNEXTITEM 参数 --}
LVNI_FOCUSED = $0001 ; //取焦点标志
{-- T_Lv_Column 有效成员标志 --}
LVCF_FMT = $01; //fmt
LVCF_WIDTH = $02; //lx
LVCF_TEXT = $04; //pszText
{-- fmt (对齐方式) --}
LVCFMT_LEFT = $0; //文本左对齐
type
{--添加列结构(LVM_INSERTCOLUMN消息)--}
T_Lv_Column = packed record
mask : UINT ; // 有效标志
fmt : integer; // 对齐方式
lx : integer; // 列的宽度
pszText : LPTSTR ; // 列名文字
cchTextMax : integer; // 忽略,查询时用
iSubItem : integer; // 忽略
end;
var
ListView_Proc: Pointer; // 默认ListView过程
//---ListView 单击事件过程-------
procedure ListViewClick;
begin // 取当前选中的item标号 [ 0 .. X ]
Cur_Item_Index := SendMessage(ListViewHanlde, LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
RefurbishFrom; // 刷新 并 间接导致重绘图标 .
end;
//----ListView窗体过程-----
function ListViewProc(WinHanlde, MessageID, WParam, LParam: Longword): Longint; stdcall;
begin
Result := CallWindowProc(ListView_Proc, WinHanlde , MessageID, wParam, lParam);
if (MessageID = WM_LBUTTONDOWN) then ListViewClick ; //处理单击事件
end;
//----向LIstView添加列----
{--文字--} {--列宽--} {--位置--}
procedure Add_Column(ColText: PChar; Width: Integer; Index: Integer);
var
Lv_Column:T_Lv_Column;
begin
Lv_Column.mask:= LVCF_FMT or LVCF_WIDTH or LVCF_TEXT ;
Lv_Column.fmt := LVCFMT_LEFT;
Lv_Column.lx := Width;
Lv_Column.pszText := ColText;
SendMessage(ListViewHanlde, LVM_INSERTCOLUMN, Index, integer(@Lv_Column));
end;
//-----引用此函数,使comctl32.dll自动装载,DLL初始化代码将注册类
procedure InitCommonControls; stdcall; external 'ComCtl32.dll' name 'InitCommonControls';
//-----建立列表框-----
procedure Create_ListView;
begin
//-- 调用空函数 --
InitCommonControls;
//--建立ListView--
ListViewHanlde := CreateWindowEx(WS_EX_CLIENTEDGE ,
'SysListView32',
'刘 浏',
WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SHOWSELALWAYS,
0,
45,
450,
164,
WindowHanlde,
0,
hInstance,
nil);
if ListViewHanlde=0 then
begin
MessageBox(0,'建立列表控件失败',nil,0);
Halt;
end;
//--ListView属性--
SendMessage(ListViewHanlde, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES or LVS_EX_FULLROWSELECT);
//--ListView字体--
SendMessage(ListViewHanlde, WM_SETFONT, MyFont_Hanlde, 0);
//--依次添加各列--
Add_Column(' 窗体标题',80,0);
Add_Column(' 窗体类名',80,1);
Add_Column(' 窗体句柄',70,2);
Add_Column(' 宽&高',65,3);
Add_Column(' 进程完整路径',150,4);
//---设处理过程--
ListView_Proc := Pointer( GetWindowLong(ListViewHanlde, GWL_WNDPROC) );
SetWindowLong(ListViewHanlde, GWL_WNDPROC, Longint(@ListViewProc));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -