Как поместить строку меню в строку меню Apple в Mac OS от C++ Builder?

Я нашел пример, используя TMenuBar.UseOSMenu Свойство разместить главное меню для Windows и Mac. Но, похоже, это только для Delphi. Я не могу найти ту же недвижимость в FMX TMenuBar компонент в C++Builder.

Кто-нибудь знает, как разместить строку меню в строке меню Apple на Mac OSX в C++?

Я использую C++ Builder 10.1 Berlin Update 2.

2 ответа

Решение

Здесь нет UseOSMenu недвижимость в 10.1 Берлине, в Delphi или C++. Это было удалено в XE3:

Новые модули и изменения в FireMonkey XE3

Использование OSMenu было удалено. Для мультиплатформенных приложений вы должны использовать FMX.Menus.TMainMenu невизуальный компонент

Также см:

Использование меню в приложении FireMonkey

Создание меню для OS X и Windows

Используйте правильный элемент управления для вашей целевой системы (OS X против Windows).

  • Для приложений Windows используйте TMenuBar управления:

    • Главное меню размещено в клиентской области формы (стандартно для Windows).
    • Элементы меню не находятся в строке меню Mac OS X (нестандартно для OS X).
  • Для приложений Mac OS X используйте TMainMenu составная часть:

    • Главное меню находится в не клиентской области формы Windows (нестандартно для Windows).
    • Элементы меню расположены в строке меню Mac OS X (стандартно для OS X).

Обращение к $IFDEF и построение меню в коде сработает. Но странно, что FMX не поддерживает главное меню более портативным способом.

Как есть, TMainMenu не так уж и плох, с некоторыми сбоями: на Mac первое определенное меню становится меню приложения, с именем, которое вы дали ему, замененным на имя приложения. Итак, необходимо создать первое меню с фиктивным именем (например, «Приложение») с обычной командой «О программе» в этом меню. Затем в меню Файл является вторым меню , чтобы определить. При запуске на ПК это первое фиктивное меню «Приложение» необходимо удалить в коде, иначе оно отобразится. На Mac (но не на ПК) FMX добавляет в последнее меню незапрошенное меню «Окно»; Я не знаю, как это предотвратить.

Дополнительная проблема - ShortCuts. Я не нашел способа установить их в редакторе элементов TMainMenu портативным способом, то есть, используя Ctrl на ПК и Cmd на Mac. Ну что ж, возможно, в конце концов, единственное хорошее решение - это построить все это в коде с полностью отдельными TMenuBar, TMainMenu и $IFDEF!

Другие вопросы по тегам