Как поместить строку меню в строку меню 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!