【问题标题】:Delphi TMenubar and TMenu on Windows & OSX - Tokyo 10.2.2Delphi Menubar 在 Windows 和 OSX 上添加菜​​单 - Tokyo 10.2.2
【发布时间】:2017-12-14 20:06:46
【问题描述】:

根据 DocWiki:

Using Menus in a FireMonkey Application

为 OS X 和 Windows 创建菜单

为您的目标系统(OS X 与 Windows)使用正确的控件。

  • 对于 Windows 应用程序,使用 TMenuBar 控件:
    • 主菜单位于表单的客户区(Windows 标准)。
    • 菜单项不在 OS X 菜单栏上(OS X 非标准)。
  • 对于 OS X 应用程序,使用 TMainMenu 组件:
    • 主菜单位于 Windows 窗体的非客户区(Windows 非标准)。
    • 菜单项放置在 OS X 菜单栏上(OS X 标准)。

所以我为 Windows 选择 TMenuBar,为 OSX 选择 TMenu。但在 Windows 上,这两个控件都会显示。

我的问题是,如何在一个表单中创建 2 个单独的控件?如果我将所有 TMenu 的项目的 Visible 设置为 False,则 Windows 中会显示一个空白菜单栏。正如我在 MacOSX 上设置 TMenuBar.Visible = false 一样。

另外,如果我在 Windows 上使用任何样式,在关闭表单时,只会对 TMenu 发生访问冲突。

有没有更好的方法在同一个表单上进行设计,而不是在 Windows 中显示空白菜单栏?

【问题讨论】:

  • OSMenu 属性不再可用。我看到了大卫一世的视频,它是由 XE2 构建的。
  • 我无法使用 OSx 进行测试,所以只是推测。如果您跳过TMenuBar 并同时使用TMainMenu 会怎样?看起来还好吗?
  • 我仅使用 TMainMenu 进行了测试,在 Windows 中,如果您使用任何样式,它会引发异常,否则它工作正常。在我的应用程序中,我使用了 Stylecontrol,它在 Windows 上出现问题,但在 OSX 中没有。
  • 啊,好的。很抱歉听到。

标签: windows macos delphi firemonkey


【解决方案1】:

使用 TMainMenu。当您的应用程序针对 Windows 编译时,该菜单将出现在表单的客户区域;当您的应用程序针对 OSX 编译时,菜单将显示在 OSX 菜单栏中。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多