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

Dun*_*uns 4 windows delphi macos firemonkey delphi-10-seattle

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

Chr*_*ton 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
...
Run Code Online (Sandbox Code Playgroud)

在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; 将第三个文本设置为连字符( - )以使其成为分隔符
  • 关闭菜单编辑器
  • 如果尚不存在,请通过双击Object Inspector中的条目为该表单创建一个OnCreate处理程序
  • 如果没有在OS X上运行,则添加到FormCreate一行来隐藏mnuApp.相反,如果你已经有一个File | Exit菜单项,那么如果在OS X上运行则应该隐藏它,因为现在功能已在应用程序菜单下退出:

...

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