当在delphi中没有选择行时,禁用listview的弹出菜单

Cyp*_*rUS 3 delphi

我的listview中有一个弹出菜单,我希望在点击不在任何行时禁用,我想知道ListView或PopupMenu应该做什么事情.

提前致谢

Dav*_*nan 16

处理OnPopup弹出菜单的事件,如下所示:

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  if ListView1.SelCount=0 then begin
    Abort;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

不要尝试在逻辑中使用鼠标光标,因为可以从键盘调用弹出菜单.


事实证明,您要根据选择禁用菜单上的某些项目.您应该为此使用操作,然后您可以集中控制UI属性.动作可以链接到按钮,弹出菜单项,主菜单项等.您不希望编写启用和禁用所有这些操作的代码 - 解决此问题的操作.

使用此OnUpdate事件.

procedure TForm1.Action1Update(Sender: TObject);
begin
  Action1.Enabled := ListView1.SelCount>0;
end;
Run Code Online (Sandbox Code Playgroud)

或者有时你想要对OnUpdate你要编码的许多动作都这样做:

procedure TForm1.FileActionsUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := ListView1.SelCount>0;
end;
Run Code Online (Sandbox Code Playgroud)

  • @Cosmin我不推荐这种方法.行动是解决方案. (2认同)