在delphi中未选择任何行时,禁用listview的弹出菜单
我在我的listview中有一个弹出菜单,当点击不在任何一行时,我想知道我应该在listview或PopupMenu的什么事件中这样做在delphi中未选择任何行时,禁用listview的弹出菜单,delphi,Delphi,我在我的listview中有一个弹出菜单,当点击不在任何一行时,我想知道我应该在listview或PopupMenu的什么事件中这样做 提前感谢按如下方式处理弹出菜单的OnPopup事件: procedure TForm1.PopupMenu1Popup(Sender: TObject); begin if ListView1.SelCount=0 then begin Abort; end; end; 不要尝试在逻辑中使用鼠标光标,因为弹出菜单可能会从键盘调用 结果表明,您
提前感谢按如下方式处理弹出菜单的
OnPopup
事件:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
if ListView1.SelCount=0 then begin
Abort;
end;
end;
不要尝试在逻辑中使用鼠标光标,因为弹出菜单可能会从键盘调用
结果表明,您希望根据所选内容禁用菜单上的某些项目。您应该为此使用操作,然后可以集中控制UI属性。操作可以链接到按钮、弹出菜单项、主菜单项等。您不希望编写启用和禁用所有这些单独操作的代码来解决此问题 为此使用
OnUpdate
事件
procedure TForm1.Action1Update(Sender: TObject);
begin
Action1.Enabled := ListView1.SelCount>0;
end;
或者,有时您希望对许多操作使用相同的OnUpdate
,这些操作将列出以下代码:
procedure TForm1.FileActionsUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled := ListView1.SelCount>0;
end;
Easy short anwser,通过名称启用或禁用一个菜单项:
YourPopup.EntryNameYouWantToDisable.Enable:=(YourBooleanCondition);
每个TMenuItem都有一个.Enable
属性,您可以将其设置为True或False
Easy short anwser,通过位置索引启用或禁用一个菜单项:
YourPopup.Items[TheIndex].Enable:=(YourBooleanCondition);
您可以使用:.items[TheIndex]
循环查看所有男性项目,并知道.items.Count的金额
p.D.:他们还有.Visible
,这样你就可以隐藏/显示你想要的弹出窗口。当我点击列表视图时,你的建议不会显示弹出窗口,但是我想显示菜单,但菜单被禁用。请建议对于i:=0到PopupMenu1.Items.Count-1做PopupMenu1.Items[i]。已启用:=(listview.SelCount>0)代码>@CyprUS再次阅读你的问题,看看你是否能理解我为什么得出这个结论。@Cosmin我不推荐这种方法。行动是解决办法。