如何添加在 OSX 上按预期工作的菜单项分隔符?
在Windows平台上,使用VCL,当我们想在菜单中添加分隔符时,我们添加一个TMenuItem
带有 Caption := '-'
;
使用 FireMonkey,我们添加一个 TMenuItem
和 Text := '-'
;
它在 Windows 平台上按预期工作,带有 Text='-' 的项目显示为分隔符。
但是,当我在 OSX 上运行相同的应用程序时,减号可见...
我没有在 TMenuItem
上找到任何属性来指定它是 < strong>separator...
我尝试过使用 TMainMenu
和 TMenuBar
(UseOSMenu := True|False;
) 和我仍然有这个问题。
有想法创建一个真正的分隔符吗?(否则,我会检查操作系统并删除它,如果 OSX...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是 FireMonkey 中的一个错误。我相信他们会解决这个问题。但同时您可以使用下面的代码。在主窗体的 OnActivate 事件中调用过程 FixSeparatorItemsForMac。
不要忘记使用列表中的 mac 特定文件。
This is a bug in FireMonkey. I am sure they will solve it. But meanwhile you can use the below code. Call the procedure FixSeparatorItemsForMac in the OnActivate event of your main form.
Dont forget mac specific files in the uses list.
我从来没有为 Mac 编程过,而且我也没有 Mac,但出于好奇,我找到了一些关于它的 Apple 文档。
菜单分隔符项是一个禁用的空白菜单项,也许您可以用它来伪造:
(来自:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSMenuItem_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSMenuItem)
I never programmed for the Mac, and I don't eveb have a Mac but out of curiosity I found some Apple Documentation about it.
The Menu Separator item is a disabled blank menu item, maybe you can fake with that:
(From: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSMenuItem_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSMenuItem)
我没有测试这个的设施,但值得一试。
默认情况下,FireMonkey 创建自己的完全样式菜单,但将 TMenuBar.UseOSMenu 属性设置为 true 并使用操作系统调用来创建菜单。
然后,您可以将其与已经讨论过的创建 Cocoa 菜单的建议结合起来。
来自http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Application_Design#Menus :
“将 TMenuBar.UseOSMenu 属性设置为 True 会导致 FireMonkey 通过操作系统调用创建菜单树,从而生成本机菜单。在 Windows 上,此菜单位于父窗体的顶部,并使用当前的外观主题显示。在 Mac OS X 上,只要应用程序获得焦点,菜单就会显示在主屏幕顶部的全局菜单栏中。”
I don't have the facilities to test this, but it's worth a try.
By default, FireMonkey creates it's own fully styled menus, but set the TMenuBar.UseOSMenu property to true and it uses OS calls to create the menus.
You can then combine this with the advice for creating Cocoa menus already discussed.
From http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Application_Design#Menus :
"Setting the TMenuBar.UseOSMenu property to True causes FireMonkey to create the menu tree with OS calls, resulting in a native menu. On Windows, this menu is at the top of the parent form, and displayed using the current Appearance theme. On Mac OS X, the menu is displayed in the global menu bar on top of the main screen whenever the application has focus."