我给MultiSelectLevel属性设置成-1后
树形列表里所有的项前都有复选框了。
我现在想实现:勾选父节点后,如父节点被选择,则对应的子节点都为勾选状态,否则子节点都不为勾选状态
在父节点勾选状态中,去掉其子节点中任意一项的勾选状态,则父节点的勾选状态被取消
该控件无法实现以上效果。如何用代码实现?
树形列表里所有的项前都有复选框了。
我现在想实现:勾选父节点后,如父节点被选择,则对应的子节点都为勾选状态,否则子节点都不为勾选状态
在父节点勾选状态中,去掉其子节点中任意一项的勾选状态,则父节点的勾选状态被取消
该控件无法实现以上效果。如何用代码实现?
procedure TForm1.fcTreeView1Click(Sender: TObject);
procedure SetCheck(aItem: TfcTreeNode; Allow: Boolean);
var
i: Integer;
begin
if (aItem = nil) or (not aItem.HasChildren) then
Exit
else
begin
for i := 0 to aItem.Count - 1 do
begin
aItem.Item[i].Checked := Allow;
SetCheck(aItem.Item[i], Allow);
end;
end;
end;var
aItem: TfcTreeNode;
begin
with fcTreeView1 do
begin
aItem := fcTreeView1.GetNodeAt(ScreenToClient(Mouse.CursorPos).X, ScreenToClient(Mouse.CursorPos).Y);
SetCheck(aItem, aItem.Checked);
if (not aItem.Checked) and (aItem.Parent <> nil) then aItem.Parent.Checked := False;
end;
end;