Delphi FMX TMainMenu第一个菜单项在OSX中不显示,OK在WIndows中显示

时间:2015-10-31 21:40:44

标签: windows macos delphi firemonkey delphi-10-seattle

我在Delphi Seattle中创建了一个多设备应用程序,并添加了一个带有MenuItem1和MenuItem2的TMainMenu(没有别的)。构建和运行OSX,只有MenuItem2显示。构建和运行Windows,两个菜单项都显示。我没有区别对待这两个菜单项。两者都只是添加而不是以任何方式定制。还有其他人经历过这个吗?

1 个答案:

答案 0 :(得分:6)

Mac菜单栏中的顶级项目通常如下所示:

Apple/system menu ('About this Mac', 'System Preferences...', etc.)
Application menu ('About XXX', 'Services', 'Hide XXX', 'Hide Others',
  'Show All', 'Quit XXX')
File menu
Edit Menu
...

在FMX中(除了第一个版本),TMainMenu中的第一个顶级项目代表应用程序菜单。因此,您需要在File X之前添加一个项目(或者您当前的第一个项目),它只显示在OS X上;然后,它的子项应包括Mac应用程序菜单的常用项。要实现这些项的行为,您可以使用标准操作(TFileHideApp,TFileHideAppOthers,TFileExit)。或者,更详细:

  • 如果还没有,请将TActionList组件添加到表单
  • 双击操作列表以显示操作列表编辑器
  • 点击添加按钮的下拉箭头,然后选择新标准操作...
  • 选择所有TFileHideApp,TFileHideAppOthers和TFileExit,然后单击确定
  • 返回表格,双击TMainMenu组件
  • 打开菜单编辑器
  • 在当前存在的第一个项目之前添加项目;在Object Inspector中,将其命名为(例如)mnuApp
  • 向mnuApp添加至少四个子项;使用Object Inspector,将第一个的Action属性分配给FileHideApp1,将第二个的Action属性分配给FileHideAppOthers,将第四个分配给FileExit1;将第三个文本设置为连字符( - )以使其成为分隔符
  • 关闭菜单编辑器
  • 如果尚不存在,请通过双击对象检查器中的条目为表单创建一个OnCreate处理程序
  • 添加到FormCreate一行,以便在OS X上运行时隐藏mnuApp。相反,如果你已经有一个File | Exit菜单项,那么如果在OS X上运行则应该隐藏它,因为该功能现在在应用程序下退出菜单:

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  mnuApp.Visible := (TOSVersion.Platform = pfMacOS);
  itmExit.Visible := (TOSVersion.Platform <> pfMacOS);
end;