有一个树视图,MultiSelect:=true
.
如果选择所有项目,则无法取消选择或再次选择,但其他项目除外。我想我需要做TreeView1.Selected.Selected:=false;
on TForm1.TreeView1Click
。但如何知道点击是否不是在控件上:项目、按钮?
一段录像:http://liga-installer.realservers.info/select.mp4 http://liga-installer.realservers.info/select.mp4
代码低于正常值吗?
procedure TForm1.TreeView1Click(Sender: TObject);
var
Item: TTreeNode;
begin
Item :=TTreeView(Sender).GetNodeAt(TTreeView(Sender).ScreenToClient(Mouse.CursorPos).X,
TTreeView(Sender).ScreenToClient(Mouse.CursorPos).y);
if (not Assigned(Item)) and (TTreeView(Sender).SelectionCount>0) then TTreeView(Sender).Select(nil, []);
end;
Thanks!
您应该在单击第一个选定项目的同时按住 Shift 键。您还可以通过按住 Ctrl 键单击一项来一次取消选择一项。
但我同意这是违反直觉的。我会做
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i: Integer;
begin
if not Assigned(TreeView1.GetNodeAt(X, Y)) then
for i := 0 to TreeView1.Items.Count - 1 do
TreeView1.Items[i].Selected := false;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)