//下载:
http://www.eping.net/fourm/viewfile.asp?ID=85//Readme.txt
TListView中选上Checkboxes就可以在首列出现CheckBox供用户选择
可是不能象TCheckListBox的ItemEnabled属性可以控制单独的一行不能被控制
采用重绘的方法来实现这个功能是很麻烦的(需要重绘图标、标题、和全部的SubItems等)
如果采用TListView::StateImages那就方便多了--Zswang 2003-08-06
//ListViewCheckUnit.pas
(*//
标题:扩充ListView的选择框
说明:利用StateImages
支持:[email protected]
日期:2003-08-06
设计:Zswang
//*)unit ListViewCheckUnit;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ImgList, StdCtrls;type
  TFormListViewCheck = class(TForm)
    ImageList1: TImageList;
    ListView1: TListView;
    Edit1: TEdit;
    procedure ListView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  FormListViewCheck: TFormListViewCheck;implementation{$R *.dfm}procedure TFormListViewCheck.ListView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  vListItem: TListItem;
  I: Integer;
  S: string;
begin
  if not (htOnStateIcon in TListView(Sender).GetHitTestInfoAt(X, Y)) then Exit;
  vListItem := TListView(Sender).GetItemAt(X, Y);
  case vListItem.StateIndex of
    0: ;
    1: vListItem.StateIndex := 2;
    2: vListItem.StateIndex := 1;
    3: ;
    4: ;
  end;  S := '';
  for I := 0 to TListView(Sender).Items.Count - 1 do
    if TListView(Sender).Items[I].StateIndex in [2, 4] then
      S := S + ',' + TListView(Sender).Items[I].Caption;
  Delete(S, 1, 1);
  Edit1.Text := S;
end;end.