Перейти к содержанию
Fire Monkey от А до Я

Barbanel

Пользователи
  • Постов

    414
  • Зарегистрирован

  • Посещение

  • Победитель дней

    36

Активность репутации

  1. Like
    Barbanel отреагировална x11 в Библиотека Alcinoe для iOS/FMX   
    На просторах sql.ru  нашёл ссылку на приложение kiskis на Delphi/FMX. Что-то типа мессенджер+инстаграм.
    https://youtu.be/WEsEhGfrW-g
    Alcinoe is a library visual and non-visual components for Delphi.
    https://github.com/Zeus64/alcinoe





  2. Like
    Barbanel отреагировална mazayhin в Перестало работать приложение. Splash screen и дальше падает.   
    Потому что API-Level 26 он будет стоять автоматически. Как впрочем и практически все остальные, запрошенные в манифесте. Так же, не плохо было бы добавить в манифест
    <uses-feature android:name="android.hardware.camera" /> Начиная с 26 необходимо разрешения, помимо указания в манифесте, должны явно запрашиваться у пользователя.
    Почитайте https://developer.android.com/guide/topics/permissions/overview
    Ну а для Delphi подключайте KastiFree https://github.com/DelphiWorlds/KastriFree
    Там есть пример использования https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/AndroidDangerousPermissions
    и в добавок https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/AndroidAPI26 тут как раз работа с камерой
  3. Like
    Barbanel отреагировална Вадим Смоленский в Windows.Services.Store namespace   
    В многомесячной борьбе с Microsoft Store за размещение у них своего Windows-приложения я продвинулся настолько, что вплотную подошел к организации взимания денег с покупателей посредством механизма add-ons (in-app purchases). Но здесь меня ждала очередная засада. Необходимые программные инструменты, главным из которых считается класс StoreContext, лежат в пространстве имен Windows.Services.Store; файлы с такими именами (windows.services.store.h и windows.services.store.idl) в Windows 10 действительно находятся; но в Delphi я не могу найти юнита с чем-то подобным. Хотя на одном форуме видел утверждение годичной давности, что в релизе 10.2 Tokyo это уже есть.
    Не может ли кто-нибудь пролить свет? Не там ищу? Все-таки еще не добавили? Или, может, это появилось лишь в самой последней сборке 10.2.3? У меня стоит 10.2.2.
    Обещание написать подробную статью по итогам моих мытарств остается в силе. На этом пути столько подводных камней и неочевидных ходов, что грех о них не поведать. Но сначала нужно дойти до победного конца.
  4. Like
    Barbanel отреагировална dnekrasov в TAlphaTrackBar - Настройка цвета.   
    Примерно так:
    var cl: TAlphaColor; begin cl := Rectangle1.Fill.Color; TAlphaColorRec(cl).A := Round(AlphaTrackBar1.Value * 255); Rectangle1.Fill.Color := cl; end;  
  5. Like
    Barbanel получил реакцию от Anatoliy в Поиск по базе через SearchBox   
    Есть мнение что Live Binding работает не всегда корректно. Выкиньте его к чертям и сделайте по людски.
    select * from your_table where FAM like %Edit1.Text%
  6. Thanks
    Barbanel получил реакцию от Anatoliy в [IOS]TVertScrollBox прыгает вверх   
    Хм, такого быть не должно.
    Можете кинуть нам тестовый пример с этой проблемой?
  7. Like
    Barbanel получил реакцию от Anatoliy в Image в рамке TRectangle   
    У круга это 100% не работает, проверял. Отсекает только по прямоугольной форме.
    Полагаю что у Rectangle тоже.
  8. Like
    Barbanel отреагировална dnekrasov в Не выходит задать положение формы на планшете   
    Да нет. Это вполне серьёзно. Это настройка и особенность винды и Delphi тут ни при чём. Так что для отладки используйте способ, описанный мною чуть выше. Без перелогина после изменения масштаба Вы ничего не увидите. Заранее сочувствую - я помню как сам намучался, когда отлаживал подобное.
  9. Like
    Barbanel отреагировална dnekrasov в Не выходит задать положение формы на планшете   
    Да. После изменения масштаба отображаться начинает вроде нормально, даже без перезагрузки приложения, а вот многие API-шные функции, относящиеся к работе с масштабом возвращают старые значения.
  10. Like
    Barbanel отреагировална dnekrasov в Не выходит задать положение формы на планшете   
    Это олдскул. Есть FMX.Platform.IFMXScreenService.GetScreenScale, FMX.Helpers.Win.GetDCScale и FMX.Helpers.Win.GetWndScale
  11. Like
    Barbanel получил реакцию от Равиль Зарипов (ZuBy) в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Потому что слово "Type" - зарезервированное слово для объявления типов.
  12. Like
    Barbanel отреагировална Shippo в альтернатива диалогу   
    да, указание полного пути к функции помогло!   Совсем другой вид у диалога. И остается в фокусе при переходе между приложениями.
    Большое спасибо. 
    (в списке юнитов присутствовал и FMX.Dialogs и  Vcl.Dialogs. видимо VCL перебивал FMX, я к сожалению этого не заметила)
  13. Like
    Barbanel отреагировална krapotkin в альтернатива диалогу   
    ну наверное не стоит ожидать чтобы два разных фреймворка в одной программе хорошо сосуществовали
    проверил. чудесно работает, нативно выглядит
    FMX.Dialogs.SelectDirectory('Открыть папку','C:\',st);
  14. Like
    Barbanel отреагировална Alex7wrt в Исправление отображения Smart Banner, Android   
    Обнаружил, что на некоторых телефонах с вытянутым экраном не отображается Smart Banner (TBannerAD.Size = Auto). Оказалось, что причиной тому неверный расчет высоты баннера в исходниках FMX.Advertising.Android. 
    Может быть, эта информация кому-нибудь поможет
     
    В документации Android высота баннера должна вычисляться так:

    Тогда как в коде FMX.Advertising.Android она вычисляется в процедуре UpdateControlMetrics следующим образом:
    const AdHeightPortrait = 90; AdHeightLandscape = 90; AdHeightPhonePortrait = 50; AdHeightPhoneLandscape = 32; AndroidSW600DP = 600; AndroidSW600DPLandscape = 552; AdMobBannerHeight = 50; AdMobFullBannerHeight = 60; AdMobLeaderboardHeight = 90; begin if (FAdControl <> nil) and not Assigned(FAdControl.OnResize) then begin case FAdControl.AdSize of TBannerAdSize.Auto: begin if Screen.Size.Height > Screen.Size.Width then if Screen.Size.Width < AndroidSW600DP then FAdControl.Height := AdHeightPhonePortrait else FAdControl.Height := AdHeightPortrait else if Screen.Size.Height < AndroidSW600DPLandscape then FAdControl.Height := AdHeightPhoneLandscape else FAdControl.Height := AdHeightLandscape; end; Также, учитывая, что на вытянутых экранах (по крайней мере на тех устройствах, на которых я тестил), Screen.Width и Screen.Height далеко не всегда дают верные значения, то более правильный код процедуры TAndroidBannerAd.UpdateControlMetrics будет таким:
    procedure TAndroidBannerAd.UpdateControlMetrics; var Frame: TRectF; Form: TCommonCustomForm; Disp: JDisplayMetrics; Window: JWindow; h: integer; const AdHeightLandscape = 90; AdHeightPhoneLandscape = 32; AndroidSW600DP = 600; AndroidSW600DPLandscape = 552; AdMobBannerHeight = 50; AdMobFullBannerHeight = 60; AdMobLeaderboardHeight = 90; begin if (FAdControl <> nil) and not Assigned(FAdControl.OnResize) then begin Disp := TJDisplayMetrics.Create; Window:=TJWindow.Wrap((MainActivity.getWindow as ILocalObject).GetObjectID); Window.getWindowManager.getDefaultDisplay.getRealMetrics(disp); h:=round(Disp.heightPixels/Disp.density); case FAdControl.AdSize of TBannerAdSize.Auto: begin if Screen.Size.Height > Screen.Size.Width then begin if h <= 400 then FAdControl.Height := 32 else if (h>400) and (h<=720) then FAdControl.Height:=50 else FAdControl.Height := 90 end else if Screen.Size.Height < AndroidSW600DPLandscape then FAdControl.Height := AdHeightPhoneLandscape else FAdControl.Height := AdHeightLandscape; end; TBannerAdSize.Small: FAdControl.Height := AdMobBannerHeight; TBannerAdSize.Medium: FAdControl.Height := AdMobFullBannerHeight; TBannerAdSize.Large: FAdControl.Height := AdMobLeaderboardHeight; end; if Screen.ActiveForm <> nil then Form := Screen.ActiveForm else if Application.MainForm <> nil then Form := Application.MainForm else Form := nil; if Form <> nil then begin Frame := WindowHandleToPlatform(Form.Handle).Bounds; FAdControl.Width := Round(Frame.Width); end; end; end;  
  15. Thanks
    Barbanel получил реакцию от x11 в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    Потому что слово "Type" - зарезервированное слово для объявления типов.
  16. Haha
    Barbanel отреагировална rareMax в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    https://www.native-english.ru/grammar/english-nouns-plural
    https://core.telegram.org/bots/api#getting-updates
  17. Like
    Barbanel отреагировална CyberStorm в Рабочее место для IOS разработки   
    Нашел в закромах материнку с сокетом 1155, и селероном 1610, откопал какойто-то системник и моник, и поставил туда хакинтош. Ставил две недели (с момента создания темы), разобрался наверное во всех особенностях и различных загрузчиках - типа хамелеона и кловера, подключение кекстов и прочей дребедени ?В итоге поставил Сиерру, установил Xcode - а он бац и говорит что нужна более новая версия MacOS ☹️ 
    Еще неделю потратил на установку Mojave (хотел подружить винду и макОС на одном винте - но в итоге сдался),  вроде все работает, настроил связь с дельфями по известным статьям с хабра, запускается симулятор - но к сожалению сразу приложение вылетает - пока не разобрался в чем дело. Так же Delphi видит подключенный телефон iPhone 5S, но в отличии от устройств андроид, на нем нельзя сразу запускать приложения (на хабре пишут что нужно сразу покупать сертификат разработчика, но вроде можно и без него).
    В общем хакинтош - тоже выход. Оказывается хакинтошников много, и есть куча людей которые за пару сотен помогут вам установить мак на любое железо.
    Так же оказывается что МакОС - это прям таки очень крутая и удобная система для повседневного пользования.

  18. Like
    Barbanel отреагировална Евгений Корепов в Реализовать рейтинг   
    Вместо рисования звезды в TPath, проще использовать соотвествующий символ юникода.
    Char($2606) // Не закрашенная звезда
    Char($2605) // Закрашенная звезда

    https://unicode-table.com/ru/sets/stars-symbols/
    Можно даже для еврейский магазинов сделать рейтинг ?
  19. Like
    Barbanel отреагировална kami в Telega π - Библиотека для работы с Telegram Bot API в Delphi   
    У меня большая просьба: вместо кучи маленьких сообщений, которые вы пишете буквально одно за другим, составьте одно, в которое напишите всё то, что хотели сказать.
    Это не чат, где "кто в онлайне - прочитали, остальным пофиг". Это форум. И искать зерна истины в этой портянке из мимолетных мыслей как минимум неудобно.
  20. Like
    Barbanel получил реакцию от Anatoliy в Размеры формы на разных устройствах   
    Этот код был на этом форуме. Смотрите переменную sScale
    if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;  
    Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
    PS. не обращайте внимания на язык, так задумано)
    приложение делается для школ Германии.

    Screens.zip
  21. Like
    Barbanel получил реакцию от #WAMACO в Размеры формы на разных устройствах   
    Этот код был на этом форуме. Смотрите переменную sScale
    if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;  
    Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
    PS. не обращайте внимания на язык, так задумано)
    приложение делается для школ Германии.

    Screens.zip
  22. Like
    Barbanel получил реакцию от Tumaso в Размеры формы на разных устройствах   
    Этот код был на этом форуме. Смотрите переменную sScale
    if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;  
    Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
    PS. не обращайте внимания на язык, так задумано)
    приложение делается для школ Германии.

    Screens.zip
  23. Like
    Barbanel отреагировална Alex7wrt в Размеры формы на разных устройствах   
    var ScreenService: IFMXScreenService; scale: single; begin if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then scale:=ScreenService.GetScreenScale; end;  
    Эту фишку придумали не разработчики FireMonkey. Коэффициент масштаба экрана используется и в iOS, и в Android. Введен он для более удобного перевода ПО под новые экраны.
    Смысл в том, что оперируя тем же логическим размером экрана, ПО автоматически отрисовывает изображение на другом физическом разрешении.
  24. Like
    Barbanel получил реакцию от Alex7wrt в Размеры формы на разных устройствах   
    Этот код был на этом форуме. Смотрите переменную sScale
    if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then begin sScreenSize := ScreenService.GetScreenSize.Round; sScale := ScreenService.GetScreenScale; DeviceInfo.diScreenLogic := FloatS(sScreenSize.x) + ' x ' + FloatS(sScreenSize.y); DeviceInfo.diScreenPhis := FloatS(sScreenSize.x * sScale) + ' x ' + FloatS(sScreenSize.y * sScale); DeviceInfo.diScreenWidth := sScreenSize.x; DeviceInfo.diScreenHeight := sScreenSize.y; DeviceInfo.diScale := sScale; end;  
    Одно из наших приложений, в архиве чуть побольше фоточек чтобы вы убедились что все действительно хорошо. Ну, заодно и критику от коллег смогу услышать))
    PS. не обращайте внимания на язык, так задумано)
    приложение делается для школ Германии.

    Screens.zip
  25. Like
    Barbanel получил реакцию от Alex7wrt в Размеры формы на разных устройствах   
    Это происходит из-за масштабирования.
    В вашем случае, коэффициент масштабирования равен 1.5
    По ширине если перемножить 320 на 1.5 как раз получится паспортные 480.
    По высоте должно тоже получиться, но у вас скорее всего форма не на полный экран, поэтому сжирается честь места сверху для статусбара и снизу для кнопок назад, домой, и список приложений.
    Мне доводилось работать с устройствами на которых были такие коэффициенты
    1.5 - древнющий беспонтовый ACER, разрешение экрана не помню
    2.0 - ветеран Nexus 4, разрешение 1280х720
    3.0 - Huawei p8 lite 2007, разрешение 1920х1080
    Со всеми этими устройствами дельфи работает без проблем, масштабирование не приносит сколь-нибудь значимых проблем.
    Расскажите, с какой целью?
×
×
  • Создать...