Should I use TMainMenu in Firemonkey to support both Windows and OS-X?


I’m reading the documentation for menus in Firemonkey desktop applications. It explains that there are two completely different menu components, one is to be used for Windows (TMenuBar) and the other is to be used for OS-X (TMainMenu).

Further, it also explains that a TMenuBar does not display on OS-X (nonstandard for OS-X), and that a TMainMenu is placed in the non-client area of the Windows form (nonstandard for Windows)

It’s my understanding that Firemonkey is supposed to be one code-base for multiple platforms, but it appears they want me to separate the two. I can understand the menus work differently across both platforms, but it seems like an unnecessary pain to implement two different main menus (and conditionally show/hide them depending on the platform). I have no intention of using the special capabilities of menus specific to either platform. Not to mention the TMenuBar is completely ugly.

Since the TMainMenu also shows on Windows, but yet also claims it’s “nonstandard for Windows”, can I assume that the TMainMenu is sufficient for both? Or do I really need to implement a separate TMenuBar just for Windows? What are the implications if I don’t separate them?

I saw this video, but It’s for Delphi XE2, and I can’t find such an option in the Delphi XE8 TMenuBar control. And again, the TMenuBar is very ugly and doesn’t work like typical menus, like the TMainMenu does. I’m confused why they would advise to use this TMenuBar at all.

Comments are closed.