我有一个TListView
with MultiSelect
set to False
。
我想切换当前选定项目的选择状态。我的意思是,取消选择当前选择(聚焦)的项目。但允许将选择(焦点)切换到另一个项目。您可以在MultiSelect
启用并在选定项目上执行Ctrl+时看到相同的切换。Click
我已经尝试过该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;
有没有一种优雅的方式来做到这一点?