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

Tumaso

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

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

  • Посещение

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

    39

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

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

    https://unicode-table.com/ru/sets/stars-symbols/
    Можно даже для еврейский магазинов сделать рейтинг ?
  2. Like
    Tumaso получил реакцию от AngryOwl в Переход на новую модель разрешений   
    @Alex7wrt,
    устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
    Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
    В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
    {$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}  
  3. Like
    Tumaso отреагировална Barbanel в Размеры формы на разных устройствах   
    Этот код был на этом форуме. Смотрите переменную 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
  4. Like
    Tumaso отреагировална Alex7wrt в Реализовать рейтинг   
    Не совсем понял, какой рейтинг имеется ввиду. Внутренний рейтинг в приложении?
    Добавить 5 переменных целочисленного типа, которые будут хранить количество выставленных оценок от 1 до 5.
    С помощью TPathData нарисовать звезду.
    Создать 5 компонентов TPath и в обработчике OnTap или OnClick каждого увеличивать соответствующую переменную на единицу. И для оценки рейтинга вычислять среднее арифметическое: (a1 + a2*2 + a3*3 + a4*4 + a5*5)/(a1 +a2 +a3 + a4 + a5)
  5. Like
    Tumaso получил реакцию от Barbanel в Raise убивает программу для Android   
    У Эмбы есть описание подобной проблемы: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Migrating_Delphi_Code_to_Mobile_from_Desktop, раздел Use a Function Call in a try-except Block to Prevent Uncaught Hardware Exceptions
    условно говоря, код, который может вызвать аппаратное исключение, нужно вызывать из другой процедуры, и исключение ловить уже там. Это справедливо не только для iOS, но для андроида тоже.
    пример:
    procedure InternalG1; begin try // что то, приводящее к исключению except // здесь обработчик по факту игнорируется end; end; procedure G1; begin try InternalG1; except // здесь обработчик корректно обработает исключение end; end; А вообще у Grijjy team есть хорошая библиотека обработки необработанных исключений для андроида и иоса.
  6. Like
    Tumaso отреагировална Slym в Вписать TRectangle в ScrollContent TPresentedScrollBox'а   
    Проблема в том что есть 2 TScrollContent, один в FMX.Layouts, другой в FMX.ScrollBox...
    поскольку пользуете TPresentedScrollBox, то разворачивайте неймспейс вручную и пишите if (Parent is FMX.ScrollBox.TScrollContent) then
  7. Like
    Tumaso получил реакцию от Евгений Корепов в Переход на новую модель разрешений   
    @Alex7wrt,
    устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
    Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
    В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
    {$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}  
  8. Like
    Tumaso получил реакцию от Yarpda в Переход на новую модель разрешений   
    @Alex7wrt,
    устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
    Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
    В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
    {$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}  
  9. Like
    Tumaso получил реакцию от Brovin Yaroslav в Переход на новую модель разрешений   
    @Alex7wrt,
    устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
    Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
    В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
    {$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}  
  10. Like
    Tumaso получил реакцию от Anatoliy в Переход на новую модель разрешений   
    @Alex7wrt,
    устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
    Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
    В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
    {$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}  
  11. Like
    Tumaso получил реакцию от Alex7wrt в Переход на новую модель разрешений   
    @Alex7wrt,
    устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
    Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
    В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
    {$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}  
  12. Like
    Tumaso получил реакцию от Alex7wrt в Переход на новую модель разрешений   
    @Alex7wrt,
    конечно смогут. Минимально допустимая версия указывается в minSdkVersion. У меня например во всех приложениях установлено <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />
  13. Like
    Tumaso получил реакцию от Barbanel в Переход на новую модель разрешений   
    @Alex7wrt,
    конечно смогут. Минимально допустимая версия указывается в minSdkVersion. У меня например во всех приложениях установлено <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />
  14. Like
    Tumaso получил реакцию от Anatoliy в Переход на новую модель разрешений   
    @Alex7wrt,
    конечно смогут. Минимально допустимая версия указывается в minSdkVersion. У меня например во всех приложениях установлено <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />
  15. Like
    Tumaso получил реакцию от Anatoliy в Разрешения для приложения не вступают в силу на Android   
    У делфи большой плюс - кроссплатформенность.  У меня реально 90% единого кода для виндов, андроида и иоса. Специфичного для каждой платформы не так и много, по большому счету.
    Писать отдельно в андроид студии, отдельно в xcode, отдельно в делфи с VCL реально не очень хочется Заказчикам то пофиг, они хотят как минимум мобильные приложения сразу и для андроида и для иоса.
  16. Like
    Tumaso получил реакцию от Alex7wrt в Разрешения для приложения не вступают в силу на Android   
    У делфи большой плюс - кроссплатформенность.  У меня реально 90% единого кода для виндов, андроида и иоса. Специфичного для каждой платформы не так и много, по большому счету.
    Писать отдельно в андроид студии, отдельно в xcode, отдельно в делфи с VCL реально не очень хочется Заказчикам то пофиг, они хотят как минимум мобильные приложения сразу и для андроида и для иоса.
  17. Like
    Tumaso получил реакцию от Евгений Корепов в Разрешения для приложения не вступают в силу на Android   
    У делфи большой плюс - кроссплатформенность.  У меня реально 90% единого кода для виндов, андроида и иоса. Специфичного для каждой платформы не так и много, по большому счету.
    Писать отдельно в андроид студии, отдельно в xcode, отдельно в делфи с VCL реально не очень хочется Заказчикам то пофиг, они хотят как минимум мобильные приложения сразу и для андроида и для иоса.
  18. Like
    Tumaso получил реакцию от Barbanel в Разрешения для приложения не вступают в силу на Android   
    У делфи большой плюс - кроссплатформенность.  У меня реально 90% единого кода для виндов, андроида и иоса. Специфичного для каждой платформы не так и много, по большому счету.
    Писать отдельно в андроид студии, отдельно в xcode, отдельно в делфи с VCL реально не очень хочется Заказчикам то пофиг, они хотят как минимум мобильные приложения сразу и для андроида и для иоса.
  19. Like
    Tumaso отреагировална kami в сборка проекта с библиотеками   
    Вы используете передачу небезопасных параметров между exe и dll?
    Зря.
  20. Like
    Tumaso отреагировална ENERGY в Рабочее место для IOS разработки   
    Имхо тогда уже лучше купить обычный ноут под Win с Intel и на нем запустить виртуалку. Это более универсальное решение. Мне решение с виртуальной машиной больше нравится, т.к в VMWare удобно создавать образы всей системы. Особенно это актуально перед обновление системы или Xcode. Не работает после обновления? Пару кликов и ты вернулся к рабочей версии.
    Ну или MacMini, тоже бюджетное решение.
  21. Like
    Tumaso отреагировална Barbanel в Что быстрее Rectangle или TButtonStyleObject, TText или TButtonStyleTextObject   
    Вы знаете, я лично такие замеры не производил.
    Я пользовался здравой логикой: поменьше анимаций, и поменьше объектов в стиле.
    Нет, вы не один.
    Если вы действительно хотите получить ответ на свой вопрос - сделайти сами такой тест производительности.
    Накидайте в стиль то что вы описали, создайте 100500 объектов и замерьте скорость.
    Сообщество скажет вам спасибо, да и вы получите профит!
  22. Like
    Tumaso отреагировална kami в borlndmm.dll при написании dll   
    Не используйте дельфовые типы (в частности - строки как отдельно так и в составе record-ов) при передаче параметров в / из длл и не надо будет никаких костылей в виде borlndmm.dll и т.п.
    Представьте, что ваша длл будет вызываться из приложения на C++ и используйте только совместимые типы для экспортируемых функций.
    Я думаю, не надо говорить, что экземпляры классов 100% не стоит передавать между длл и exe.
  23. Like
    Tumaso получил реакцию от Barbanel в TEdit проблема с установка фокуса и его снятием   
    Я в токио использую TEdit.ResetFocus - фокус с edit убирается, событие OnExit срабатывает
  24. Like
    Tumaso получил реакцию от Barbanel в Тестирование на ферме устройств   
    Проведение тестирования нужно заказывать дополнительно, по умолчанию его нет
  25. Like
    Tumaso получил реакцию от Alex7wrt в Как сделать форму с компонентами под все разрешения?   
    При запуске приложения определяете текущее разрешение, программно вычисляете размеры и положения компонент и программно применяете их. При OnResize у формы всё пересчитываете..
×
×
  • Создать...