//下载:
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.
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.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货