⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listview_unit.pas

📁 进程完整路径
💻 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 + -