有一个树视图,MultiSelect:=true
。
如果要选择所有项目,则无法取消选择或再次选择其他项目。我想我需要在TreeView1.Selected.Selected:=false;
上TForm1.TreeView1Click
。但是如何知道控件上是否有点击:项目,按钮?
视频: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;
谢谢!
答案 0 :(得分:2)
您应该在单击第一个选定项目时按住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;