Delphi FMX TMainMenu 第一个菜单项在 OSX 中未显示,在 WIndows 中正常
Delphi FMX TMainMenu first menu item doesn't show in OSX, OK in WIndows
我在 Delphi 西雅图创建了一个多设备应用程序并添加了一个带有 MenuItem1 和 MenuItem2 的 TMainMenu(没有别的)。为 OSX 构建和 运行,仅显示 MenuItem2。 Building 和 运行 for Windows,两个菜单项都会显示。我没有以任何不同方式对待这两个菜单项。两者都是刚刚添加的,没有以任何方式定制。还有其他人遇到过这种情况吗?
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 (或您当前的第一项)之前添加一个仅显示在 OS X 上的项目;它的子项目应该包括 Mac 应用程序菜单的常用项目。要实现这些项目的行为,您可以使用标准操作(TFileHideApp、TFileHideAppOthers、TFileExit)。或者,更详细地说:
- 如果还没有,请在表单中添加一个 TActionList 组件
- 双击动作列表调出动作列表编辑器
- 单击添加按钮的下拉箭头,select 新建标准操作...
- Select 所有的 TFileHideApp、TFileHideAppOthers 和 TFileExit,然后单击确定
- 返回窗体,双击 TMainMenu 组件打开菜单编辑器
- 在当前存在的第一个项目之前立即添加一个项目;在对象检查器中,将其命名为(例如)mnuApp
- 向mnuApp添加至少四个子项;使用 Object Inspector,将第一个的 Action 属性 分配给 FileHideApp1,第二个分配给 FileHideAppOthers,第四个分配给 FileExit1;将第三个的文本设置为连字符 (-) 使其成为分隔符
- 关闭菜单编辑器
- 如果尚不存在,请通过双击对象检查器中的条目为表单创建一个 OnCreate 处理程序
- Add to FormCreate a line to hide mnuApp if not 运行 on OS X. 相反,如果你已经有文件|退出的菜单项,如果运行 在 OS X 上,因为该功能现在在应用程序菜单下退出:
...
procedure TForm1.FormCreate(Sender: TObject);
begin
mnuApp.Visible := (TOSVersion.Platform = pfMacOS);
itmExit.Visible := (TOSVersion.Platform <> pfMacOS);
end;
我在 Delphi 西雅图创建了一个多设备应用程序并添加了一个带有 MenuItem1 和 MenuItem2 的 TMainMenu(没有别的)。为 OSX 构建和 运行,仅显示 MenuItem2。 Building 和 运行 for Windows,两个菜单项都会显示。我没有以任何不同方式对待这两个菜单项。两者都是刚刚添加的,没有以任何方式定制。还有其他人遇到过这种情况吗?
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 (或您当前的第一项)之前添加一个仅显示在 OS X 上的项目;它的子项目应该包括 Mac 应用程序菜单的常用项目。要实现这些项目的行为,您可以使用标准操作(TFileHideApp、TFileHideAppOthers、TFileExit)。或者,更详细地说:
- 如果还没有,请在表单中添加一个 TActionList 组件
- 双击动作列表调出动作列表编辑器
- 单击添加按钮的下拉箭头,select 新建标准操作...
- Select 所有的 TFileHideApp、TFileHideAppOthers 和 TFileExit,然后单击确定
- 返回窗体,双击 TMainMenu 组件打开菜单编辑器
- 在当前存在的第一个项目之前立即添加一个项目;在对象检查器中,将其命名为(例如)mnuApp
- 向mnuApp添加至少四个子项;使用 Object Inspector,将第一个的 Action 属性 分配给 FileHideApp1,第二个分配给 FileHideAppOthers,第四个分配给 FileExit1;将第三个的文本设置为连字符 (-) 使其成为分隔符
- 关闭菜单编辑器
- 如果尚不存在,请通过双击对象检查器中的条目为表单创建一个 OnCreate 处理程序
- Add to FormCreate a line to hide mnuApp if not 运行 on OS X. 相反,如果你已经有文件|退出的菜单项,如果运行 在 OS X 上,因为该功能现在在应用程序菜单下退出:
...
procedure TForm1.FormCreate(Sender: TObject);
begin
mnuApp.Visible := (TOSVersion.Platform = pfMacOS);
itmExit.Visible := (TOSVersion.Platform <> pfMacOS);
end;