listview 属性checkbox 设为 true
一共4个Item,选中第一个,则下面全选,如果下面三个有一个不选中,则第一个也Check =false,
看起来简单,我试了半天也不行,谁做过?
类似:
All
Item1
Item2
Item3
一共4个Item,选中第一个,则下面全选,如果下面三个有一个不选中,则第一个也Check =false,
看起来简单,我试了半天也不行,谁做过?
类似:
All
Item1
Item2
Item3
解决方案 »
- IdTCPClient与 IdTCPServer 间传输问题,请指教。
- 请问哪位richedti2.0的帮助啊?
- 通过SendMessage()如何发送‘Ctrl+鼠标左键’的组合消息啊???急!!!
- TSocketServer好还是IdTCPServer好?
- 怎样把TMainMenu和TCoolBar结合起来
- DecodeDate把date数据字段分开,反过来的那个函数叫什么名字?
- 如何在一次查询的基础之上做另一次查询
- 屏幕保护程序的预览问题
- 用了SkinData后edit不能选中
- 实现电脑上输入电话号码,直接拨号
- dbgrid的问题
- 我动态创建一个ADOConnection,怎样判断连接是否成功
见意你换一下控件,
用Raize控件包中的RzCheckList控件,
你选择父时,即自动选择全部子,不用写代码的,控件自动的
取消选择父时,即取消全部子
Shift: TShiftState; X, Y: Integer);
var
ht: THitTests;
pt: TPoint;
item: TListItem;
i: integer;
begin
GetCursorPos(pt);
pt:= ListView1.ScreenToClient(pt);
ht:= ListView1.GetHitTestInfoAt(Pt.x, pt.y); if htOnStateIcon in ht then
begin
item:= ListView1.GetItemAt(Pt.x, Pt.y);
if not Assigned(item) then exit;
if Item.Index=0 then
begin
if Item.Checked then
begin
for i:=1 to 3 do
ListView1.Items[i].Checked:=true;
end else begin
for i:=1 to 3 do
ListView1.Items[i].Checked:=false;
end;
end else begin
if not Item.checked then
ListView1.Items[0].checked:=false;
end;
end;
end;
如果下面三个都选中,则第一个也选中呢
procedure TFrm.LvMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ht: THitTests;
pt: TPoint;
Item: TListItem;
i: integer;
begin
GetCursorPos(pt);
pt:= Lv.ScreenToClient(pt);
ht:= Lv.GetHitTestInfoAt(Pt.x, pt.y); if htOnStateIcon in ht then
begin
item:= Lv.GetItemAt(Pt.x, Pt.y);
if not Assigned(item) then exit;
if Item.Index=0 then
begin
if Item.Checked then
begin
for i:=1 to Lv.Items.Count-1 do
Lv.Items[i].Checked:=true;
end
else begin
for i:=1 to Lv.Items.Count-1 do
Lv.Items[i].Checked:=false;
end;
end
else
begin
if not Item.checked then
Lv.Items[0].checked := false; if ISCheckAll then
Lv.Items[0].checked := true;
end;
end;
end;function TFrm.ISCheckAll: Boolean;
Var
i: integer;
LI: TListItem;
Bol: Boolean;
begin
Bol := True;
For i := 1 to LV.Items.Count-1 do
begin
LI := LV.Items.Item[i];
if LI.Checked = false then
begin
Bol := false;
End;
End;
Result := bol;
End;