只能截消息,没有事件。
当发生改变时,ListView会向其父窗口发通知消息:WM_Notify,在LParam参数中会带有一个TNMHdr记录的指针,如果其code值为LVN_ITEMCHANGED。
将LParam转换为TNMListView记录型的指针,检查其uOldState和uNewState的高四位值,如果不相等,则表示CheckBox改变了。关于LVN_ITEMCHANGED请查阅MSDN。在Delphi中截获消息的一个简单办法是声明一个下列格式的方法:
procedure MessageHandler(var msg: TMessage);
然后在FormCreate或FormShow中把控制的WindowProc属性替换为它,记住先找个变量保存原来的值,以便执行默认的操作和恢复。源程序示范如下:procedure TForm1.WMNotify(var msg: TMessage);
var
  iOldState, iNewState: Integer;
begin
  FOldHandler(msg);
  if (msg.msg <> WM_Notify) or (csLoading in ComponentState) then
    Exit;  with TWMNotify(msg) do
  begin
    if NMHdr^.code = LVN_ITEMCHANGED then
    with PNMListView(NMHdr)^ do
    begin
      iOldState := uOldState and $F000;
      iNewState := uNewState and $F000;
      if (iOldState > 0) and (iOldState <> iNewState) then
      begin
        // 这里加入你的处理
      end;
    end;
  end;
end;