我在 Delphi Seattle 创建了一个多设备应用程序,并添加了一个带有 MenuItem1 和 MenuItem2 的 TMainMenu(仅此而已)。为 OSX 构建和运行,只有 MenuItem2 显示。为 Windows 构建和运行,两个菜单项都显示。我没有以任何不同的方式对待这两个菜单项。两者都是刚刚添加的,没有以任何方式定制。还有人经历过这个吗?
1 回答
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 中的第一个顶级项目代表应用程序菜单。因此,您需要在文件(或您当前的第一个项目)之前添加一个仅在 OS X 上显示的项目;其子项应包括 Mac 应用程序菜单的常用项。要实现这些项目的行为,您可以使用标准操作(TFileHideApp、TFileHideAppOthers、TFileExit)。或者,更详细地说:
- 如果还没有,请在表单中添加一个 TActionList 组件
- 双击动作列表,弹出动作列表编辑器
- 单击添加按钮的下拉箭头,然后选择新建标准操作...
- 选择所有 TFileHideApp、TFileHideAppOthers 和 TFileExit,然后单击 OK
- 返回表单,双击 TMainMenu 组件打开菜单编辑器
- 在当前存在的第一个项目之前添加一个项目;在 Object Inspector 中,调用它(比如)mnuApp
- 向 mnuApp 添加至少四个子项;使用 Object Inspector,将第一个的 Action 属性分配给 FileHideApp1,第二个分配给 FileHideAppOthers,第四个分配给 FileExit1;将第三个文本设置为连字符 (-) 以使其成为分隔符
- 关闭菜单编辑器
- 如果尚不存在,请通过在 Object Inspector 中双击其条目为表单创建一个 OnCreate 处理程序
- 添加到 FormCreate 一行以隐藏 mnuApp 如果未在 OS X 上运行。相反,如果您已经有 File|Exit 的菜单项,如果在 OS X 上运行,则应该隐藏它,因为该功能现在在应用程序菜单下退出:
...
procedure TForm1.FormCreate(Sender: TObject);
begin
mnuApp.Visible := (TOSVersion.Platform = pfMacOS);
itmExit.Visible := (TOSVersion.Platform <> pfMacOS);
end;
于 2015-11-01T00:04:31.137 回答