如何使用禁用MultiSelect的TListView切换所选(聚焦)项目的选择状态?

时间:2017-06-18 12:14:33

标签: delphi vcl tlistview

我的TListView MultiSelect设置为False

我想切换当前所选项目的选择状态。我的意思是,取消选择当前选中的项目(聚焦)。但允许将选择(焦点)切换到另一个项目。启用MultiSelect时可以看到相同的切换,并在选定项目上执行 Ctrl + 单击

我已经尝试了OnChanging事件,但由于重新进入该方法而完全迷失了。

我终于用OnEditing事件做了一个非常丑陋的解决方法,例如:

procedure TForm1.CMUnselectItems(var Message: TMessage);
var
  Item: TListItem;
begin
  Item := ListView1.Selected;
  if Assigned(Item) then
  begin
    ListView1.Selected := nil;
    ListView1.ItemFocused := nil;
  end;
end;

procedure TForm1.ListView1Editing(Sender: TObject; Item: TListItem;
  var AllowEdit: Boolean);
begin
  AllowEdit := False;
  PostMessage(Self.Handle, CM_UnselectItems, 0, 0);
end;

有优雅的方法吗?

0 个答案:

没有答案