加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在delphi中关闭自定义PopupMenu?

发布时间:2020-12-15 09:35:14 所属栏目:大数据 来源:网络整理
导读:我有一个带有CoolTrayIcon和PopupMenu的项目,具有禁用的AutoPopup属性. 我想定位PopupMenu并为用户显示它. 位置正常,但如果用户点击或按ESC按钮,菜单不会关闭. 我没有找到像Active这样的属性,如果使用或不使用菜单可能有帮助. 在这里我定位菜单: procedure
我有一个带有CoolTrayIcon和PopupMenu的项目,具有禁用的AutoPopup属性.
我想定位PopupMenu并为用户显示它.
位置正常,但如果用户点击或按ESC按钮,菜单不会关闭.
我没有找到像Active这样的属性,如果使用或不使用菜单可能有帮助.

在这里我定位菜单:

procedure TForm1.CoolTrayIcon1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X,Y: Integer);
var
  pnt: TPoint; yy:integer;
begin

GetCursorPos(pnt);
yy:=pnt.y; yy:=yy-500;

if (Button=mbRight) then begin
    PopupMenu1.Popup(pnt.X,yy);
end;

end;

如果需要,我怎么能设法关闭菜单?

解决方法

这是一个已知的问题,在这里讨论:

PRB: Menus for Notification Icons Do Not Work Correctly

您需要将调用包装到Popup(),如下所示:

SetForegroundWindow(Handle);
PopupMenu1.Popup(pnt.X,yy);
PostMessage(Handle,WM_NULL,0);

在此代码中,Handle是与通知图标关联的表单的窗口句柄.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读