Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблема отображения главного меню в Delphi-приложениях на OSX и Windows

Delphi , ОС и Железо , Windows

Разработчики, столкнувшиеся с мультиплатформенной разработкой под Delphi, иногда сталкиваются с проблемами совместимости интерфейса. Одной из таких проблем является некорректное отображение главного меню в приложениях, созданных с использованием Delphi Seattle, на операционных системах OSX и Windows. В частности, при разработке Multi-Device Application и добавлении TMainMenu с MenuItem1 и MenuItem2, в операционной системе OSX отображается только второй элемент меню, в то время как в Windows оба элемента отображаются корректно. Разберемся с этой проблемой.

Описание проблемы

Пользователь создал Multi-Device Application в Delphi Seattle и добавил TMainMenu с двумя элементами меню: MenuItem1 и MenuItem2. При сборке и запуске приложения на OSX отображается только MenuItem2, в то время как на Windows оба элемента меню отображаются без проблем. Пользователь не применял к элементам меню никаких особенных настроек, они были добавлены в стандартном режиме.

Подтвержденный ответ

В операционных системах на базе MacOS структура меню отличается от Windows. В верхней части меню обычно располагаются следующие пункты:

  • Меню Apple/system (например, "О программе", "Системные настройки" и т.д.);
  • Меню приложения (например, "О программе", "Сервисы", "Скрыть", "Скрыть другие", "Показать все", "Выход из программы");
  • Файл (File);
  • Редактирование (Edit);
  • ...

В FMX (кроме самой первой версии) первый элемент главного меню представляет собой меню приложения. Поэтому, для корректного отображения меню в OSX, необходимо добавить элемент перед File (или другим первым элементом), который будет отображаться только в OSX. Подэлементы этого пункта должны включать стандартные пункты меню приложения на Mac. Для реализации поведения этих пунктов можно использовать стандартные действия (например, TFileHideApp, TFileHideAppOthers, TFileExit).

Шаги решения проблемы

  1. Добавьте на форму компонент TActionList, если его еще нет.
  2. Двойным кликом откройте редактор списка действий.
  3. Создайте новые стандартные действия, выбрав TFileHideApp, TFileHideAppOthers и TFileExit.
  4. В редакторе меню добавьте новый элемент перед первым существующим, назовите его, например, mnuApp.
  5. Добавьте в mnuApp подэлементы, назначив им стандартные действия и текст, соответствующий MacOS.
  6. В обработчике события OnCreate формы добавьте проверку на платформу и скрытие соответствующих элементов меню.

Пример кода на Object Pascal (Delphi)

procedure TForm1.FormCreate(Sender: TObject);
begin
  mnuApp.Visible := (TOSVersion.Platform = pfMacOS);
  itmExit.Visible := (TOSVersion.Platform <> pfMacOS);
end;

Также можно использовать директивы компиляции для скрытия элементов меню в зависимости от платформы:

{$IFDEF MSWINDOWS}
  MenuItem1.Visible := False
{$ELSE $IFDEF MACOS}
  MenuItem3.Visible := False
{$ENDIF}

Заключение

При разработке мультиплатформенных приложений важно учитывать особенности пользовательского интерфейса каждой из целевых платформ. В данном случае, для корректного отображения главного меню в приложениях, запущенных на OSX и Windows, необходимо правильно настроить структуру меню и использовать стандартные действия, предоставляемые FMX.

Создано по материалам из источника по ссылке.

Проблема заключается в некорректном отображении главного меню в мультиплатформенном приложении Delphi на OSX, когда из-за отличий в структуре меню на этой операционной системе отображается только второй элемент, в то время как на Windows оба элемента ото


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 10:52:07/0.003680944442749/0