我找到了一个使用TMenuBar.UseOSMenu属性为Windows和Mac放置主菜单的示例。但这似乎只适用于德尔菲。我在FMX的TMenuBar组件C++Builder中找不到相同的属性。
有人知道如何在C++的Mac上的苹果菜单栏中放置菜单栏吗?
我正在使用C++ Builder10.1柏林更新2。
发布于 2017-01-18 20:32:37
在柏林10.1、德尔福或UseOSMenu都没有C++的房产。它是在XE3中删除的:
FireMonkey XE3中的新单位和变化
UseOSMenu已被移除。对于多平台应用程序,您应该使用
FMX.Menus.TMainMenu,这是一个非可视组件。
另见:
在FireMonkey应用程序中使用菜单
为OS和Windows创建菜单 对目标系统使用正确的控件(OS与Windows)。
TMenuBar控件:- The main menu is placed in the client area of the form (standard for Windows).
- The menu items are not on the Mac OS X menu bar (nonstandard for OS X).
TMainMenu组件:- The main menu is placed in the non-client area of the Windows form (nonstandard for Windows).
- Menu items are placed on the Mac OS X menu bar (standard for OS X).
发布于 2021-04-22 16:14:00
诉诸$IFDEF并在代码中构建菜单是可行的。但令人奇怪的是,FMX没有以更便携的方式处理主菜单。
事实上,TMainMenu并不是很糟糕,有一些问题:在Mac上,第一个定义的菜单变成了应用程序菜单,您给它的名称被应用程序名称所取代。因此,有必要创建带有虚拟名称的第一个菜单(例如,"App"),并在该菜单上使用通常的“约”命令。然后,File菜单是要定义的第二个菜单。在PC上运行时,需要删除第一个虚拟的"App“菜单,否则它会显示出来。在Mac (但不在PC上) FMX添加了一个未请求的“窗口”菜单作为最后一个菜单;我不知道如何防止这种情况发生。
另外一个问题是ShortCuts。我还没有找到在TMainMenu的Items Editor中以可移植方式设置这些内容的方法,即在PC上使用Ctrl,在Mac上使用Cmd。哦,好吧,也许唯一好的解决方案就是用完全独立的TMenuBar、TMainMenu和$IFDEFs来构建所有的代码!
https://stackoverflow.com/questions/41688066
复制相似问题