Windows和Windows上的Delphi TMenubar和TMenu OSX - 东京10.2.2

时间:2017-12-14 20:06:47

标签: windows macos delphi firemonkey

根据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选择SELECT workday_series.* FROM (SELECT CASE CURRENT_DATE WHEN '2017-12-14' THEN CURRENT_DATE WHEN '2017-12-15' THEN CURRENT_DATE ELSE '2017-12-01' END) AS REF (date_reference) JOIN LATERAL generate_series(ref.date_reference, '2017-12-31'::DATE, '1 day') AS workday_series(workday) ON TRUE; ,为OSX选择TMenuBar。但是在Windows上,两个控件都在显示。

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

此外,如果我在Windows上使用任何样式,则在关闭表单时,仅对TMenuBar.Visible = false发生访问冲突。

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

1 个答案:

答案 0 :(得分:1)

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