• 0
rakhmet

FMX + OSX + NSWindow

Вопросы

Для FMX-приложения понадобилось разместить кнопки с битмапами в заголовке OSX-окна:

buttons_with_glyphs.png

Здесь был, это читал, но подходящего Delphi-решения найти не смог. Есть какие-нибудь идеи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 ответов на этот вопрос

  • 0

На данный момент переписываюсь с представителями TMS. Говорят, что кнопку в принципе разместить можно, но в целом всё упирается в невозможность увеличения значения Height у Title Bar (aka Form Caption) NSWindow через FMX. С ними пока не спорю, но возможности ищу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, ZuBy сказал:

Из коробки у NSWindow нету метода addViewToTitleBar 

Ок, понятно, спасибо за ответ. Какие будут предложения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

дело совсем плохо, addViewToTitleBar уже не поддерживается

Цитата

The officially-supported way to add a title bar button in OS X 10.10 (Yosemite) and later is by creating an NSTitlebarAccessoryViewController and adding it to your window using -[NSWindow addTitlebarAccessoryViewController].

нужно использовать addTitlebarAccessoryViewController, но опять же его нет в Delphi.

Предложение такое, искать транслированное sdk под делфи

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
24 минуты назад, ZuBy сказал:

дело совсем плохо, addViewToTitleBar уже не поддерживается

нужно использовать addTitlebarAccessoryViewController, но опять же его нет в Delphi.

Предложение такое, искать транслированное sdk под делфи

Т.е. проще уйти на тот же XCode/Swift, чем найти "транслированное sdk под делфи" - я правильно понял намёк?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 минут назад, rakhmet сказал:

Т.е. проще уйти на тот же XCode/Swift, чем найти "транслированное sdk под делфи" - я правильно понял намёк?

Только в случае если киллер фича приложения кнопки в заголовке окна

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
16 минут назад, rakhmet сказал:

Т.е. проще уйти на тот же XCode/Swift, чем найти "транслированное sdk под делфи" - я правильно понял намёк?

https://community.embarcadero.com/blogs/entry/quickly-auto-generate-ios-osx-and-android-headers-for-delphi-and-c-builder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 минут назад, rakhmet сказал:

Т.е. проще уйти на тот же XCode/Swift, чем найти "транслированное sdk под делфи" - я правильно понял намёк?

Ну если Вы уже кодили на XCode/Swift, то в Вашем случае возможно и проще... Смотря какая конечная цель.

А если говорить именно о Вашей проблеме, то что Вам мешает сделать свое окно полностью, в шапке которого можете размещать хоть проигрываемое видео, не говоря уже про кнопочки с битмапами. Причем окна свои можно сделать "вылитыми" макосовскими... Хотя не вижу в этом необходимости (как по мне - так они не очень удобны).

Сделайте свой стиль, свои окна, с тенями, с кнопками с битмапами. С чем угодно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
14 минут назад, AlexG сказал:

Ну если Вы уже кодили на XCode/Swift, то в Вашем случае возможно и проще... Смотря какая конечная цель.

А если говорить именно о Вашей проблеме, то что Вам мешает сделать свое окно полностью, в шапке которого можете размещать хоть проигрываемое видео, не говоря уже про кнопочки с битмапами. Причем окна свои можно сделать "вылитыми" макосовскими... Хотя не вижу в этом необходимости (как по мне - так они не очень удобны).

Сделайте свой стиль, свои окна, с тенями, с кнопками с битмапами. С чем угодно!

???

 

А разве такое возможно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Мне лень (сорри!) что-то изобретать - просто сделаю скрин проекта, который сейчас у меня открыт. И он абсолютно одинаково выглядит и работает и под виндой и под макосью!

Снимок.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Хм...

Выглядит замечательно. Спасибо за сэмпл. Я как-то не подумал о том, чтобы ручками ВСЁ окно перерисовать самостоятельно. Теперь осталось разобраться, как это работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, rakhmet сказал:

Хм...

Выглядит замечательно. Спасибо за сэмпл. Я как-то не подумал о том, чтобы ручками ВСЁ окно перерисовать самостоятельно. Теперь осталось разобраться, как это работает.

"Ищите и обрящите" (с)))
На форуме есть темы, связанные с этим вопросом. В том числе и я где-то тут описывал - как делать такие формы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От yooSee
      Всем привет, вот и я решил внести свою лепту в жизнь форума и сегодня мы разберемся с разрешениями на Delphi Rio под Андроид. 
      Для примера мы будем использовать разрешения на чтение и запись с памяти устройства, для начала в нашем проекте выставим в Delphi>Project>Application>Uses Permissions галочки на Read External Storage и Write External Storage.
      в uses проекта добавьте следующее
      uses System.Permissions, Androidapi.Jni.Os, Androidapi.Helpers, далее  создадим переменные
      var Form: TForm; .... FPermissionWrite: string; FPermissionRead: string; в Form.Create добавим следующий код
      procedure TForm.FormCreate(Sender: TObject); begin FPermissionWrite := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); //Значение на запись FPermissionRead := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); //Значение на чтение end; и теперь сам не посредственно запрос на подтверждение наших прав
      procedure TForm.Button1Click(Sender: TObject); begin PermissionsService.RequestPermissions ([FPermissionWrite, FPermissionRead], nil); end; //это вызовет окно с запросом разрешения прав ну и для проверки бросим на форму TMemo и пару TButton , в них реализуем сохранение и чтение из файла с памяти устройства
      procedure TForm.Button1Click(Sender: TObject); begin Memo1.Lines.LoadFromFile(TPath.Combine(TPath.GetSharedDocumentsPath, 'test.txt')); end; procedure TForm.Button2Click(Sender: TObject); begin Memo1.Lines.SaveToFile(TPath.Combine(TPath.GetSharedDocumentsPath, 'test.txt')); end; P.S. Напоминаю что для работы TPath нам понадобится подключить в Uses 
      uses System.system.ioutils; Надеюсь материал будет полезен! 
       
       
       

      video_2019-02-08_00-11-36.mp4 Permissions.zip
    • От Mohamed BEN AMMAR
      hello 
      i'm using delphi fmx for building android App
      i have this code for Activating The WI-FI icon from android device:
      This could be found here .
      =========== code ==================
      uses
        Androidapi.Helpers,
        Androidapi.JNI.JavaTypes,
        Androidapi.JNI.GraphicsContentViewText,
        Androidapi.JNIBridge,
        Androidapi.JNI.WifiManager;
        procedure SetWifiEnabled (AEnable: Boolean); var   Obj: JObject;   WifiManager: JWifiManager; begin   Obj: = SharedActivityContext.getSystemService (TJContext.JavaClass.WIFI_SERVICE);   if Obj = nil then     Exit;     WifiManager: = TJWifiManager.Wrap ((Obj as ILocalObject) .GetObjectID);   WifiManager.setWifiEnabled (AEnable); end; 
       
       My question is About Activating Android location:
        Is it possible to activate the service location icon from android device
       programatically without using the Location or TLocationSensor component ....?
      however I know exactly that google has been Deactivate this API since android "4" just for security reasons .....
      but i have seen many apps in playstore can activate the service without using 
      this code here ask the user for activate the location manually .... procedure TForm1.GPSSettings; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; in other versions like lolipopup can show just the Allow Permission system dialog timer ....( Asking the user for Allowing this App to Activate the service location ......) 
      I have an android device with lolipopup version and i try to execute the location EMBARCADERO sample but 
      this one can not activate the service location ICON even  my device show me the Allow permission dialog where i choose yes allow
      with never ASK....
      Finally ,  I like the WI-FI code above .....
      and i'm wondering if someone here can do this task for me (i need a unit as the WI-FI code above which can offer me
      the option to activate the Service Location ICON )
      I'm ready to paid for that task .....
       
      Sincerelly: Brave.
    • От TAZAQ
      Доброго времени суток, возникло пару вопросов по поводу нового релиза студии, а конкретно Delphi 10.3 community:
      1) В каком месте находится презентованный z-order для компонентов и как он работает?
      2) Почему на inline объявление переменных ругается редактор кода, но при этом компилятор спокойно пережевывает и не давится?

    • От Юрий Гусач
      Доброго дня!
      Проясните пожалуйста ситуацию: при запуске программы  под Андроидом на различных устройствах я получаю размеры формы, которые вроде всегда в разы меньше чем максимальное разрешение экрана конкретного устройства. Я пробовал планшеты и разные смартфоны. Написал тестовую прогу, которая выводит СlientScreen и  ClientWidth формы, на которой ничего больше нет. Например для крайне бюджетного смартфона Fly FS-549 получилось 497 х 320, а по паспорту 854x480. Разрешение и так хреновое, а Delphi его еще сильнее уменьшает. -       Почему это происходит и можно ли как то это обойти?
       
       
    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу