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

Tumaso

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

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

  • Посещение

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

    39

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

  1. Like
    Tumaso получил реакцию от Sergionn в Мобильная разработка на Delphi - программа для врачей по оценке взаимодействий лекарств.   
    А потестировать её как нибудь можно на своих аппаратах?
  2. Like
    Tumaso получил реакцию от HyperZen в Это приложение было создано для более ранней версии Android   
    1. Проверь AndroidManifest.template.xml, параметры minSdkVersion и targetSdkVersion
    2. Перекомпилируй в Rio (предварительно сделав Revert System Files to Default у узла Target Platforms->Android->Libraries)
  3. Like
    Tumaso получил реакцию от HyperZen в Это приложение было создано для более ранней версии Android   
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />  - так по умолчанию указано в AndroidManifest.template.xml в корне проекта, но при редактировании вручную вместо переменных можно указать конкретные значения. Если собирать с помощью Rio, то minSdkVersion = 19, targetSdkVersion = 28.
    <uses-sdk android:minSdkVersion="конкретное значение" android:targetSdkVersion="конкретное значение" />  - так указано в AndroidManifest.xml после компиляции, на них и реагирует ОС при попытке запуска приложения. Если там указано использование старых sdk, тогда андроид и ругается.
    Решение простое - перекомпилите в Rio и проблема уйдет.
  4. Like
    Tumaso получил реакцию от Ingalime в Это приложение было создано для более ранней версии Android   
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />  - так по умолчанию указано в AndroidManifest.template.xml в корне проекта, но при редактировании вручную вместо переменных можно указать конкретные значения. Если собирать с помощью Rio, то minSdkVersion = 19, targetSdkVersion = 28.
    <uses-sdk android:minSdkVersion="конкретное значение" android:targetSdkVersion="конкретное значение" />  - так указано в AndroidManifest.xml после компиляции, на них и реагирует ОС при попытке запуска приложения. Если там указано использование старых sdk, тогда андроид и ругается.
    Решение простое - перекомпилите в Rio и проблема уйдет.
  5. Like
    Tumaso получил реакцию от Евгений Корепов в Это приложение было создано для более ранней версии Android   
    1. Проверь AndroidManifest.template.xml, параметры minSdkVersion и targetSdkVersion
    2. Перекомпилируй в Rio (предварительно сделав Revert System Files to Default у узла Target Platforms->Android->Libraries)
  6. Like
    Tumaso получил реакцию от Ingalime в Это приложение было создано для более ранней версии Android   
    1. Проверь AndroidManifest.template.xml, параметры minSdkVersion и targetSdkVersion
    2. Перекомпилируй в Rio (предварительно сделав Revert System Files to Default у узла Target Platforms->Android->Libraries)
  7. Like
    Tumaso отреагировална krapotkin в Переезд на 10.3 Rio   
    сколько бед принесла уже стрельба в ногу под названием ProcessMessages
    как хорошо, что в Андроиде наконец всех отучат от этого крайне вредного трюка
    давайте формально 
    все что там у вас "высоконагруженное" выносите в потоки и пусть они работают. Ваши "потоки" пасутся в главном (Synchronize) и никакого толка нет
    концепцию надо поменять. запустили поток и занимайтесь своим делом. например покажите Splash
    а вернется поток - вот по возвращению и сделаете то, что этот Splash закроет.
    и уж точно потоки не должны ничего общего иметь с формами
    я писал статью про потоки, там про сплеши тоже есть в блоге и про ProcessMessages отдельная боль...
    http://www.cyberforum.ru/blogs/469693/blog4875.html
     
  8. Like
    Tumaso отреагировална mazayhin в Как выгрузить приложение   
    Ну это вопросы к разработчикам системы, почему они решили что то, что пользователь закрыл, должно из памяти выгружаться системой (да, оно висит в recent, но на деле может быть выгружено - это вы видите, когда запускаете снова от туда, и все данные и состояние теряется.) JNI тут не причем. 
    Почитайте первоисточник (доки по андроиду от гугла, про жц активити. Оно одно, обычно, для всего приложения на делфи)
    Ну и попробуйте "закрыть" тот же навигатор гугла. Что будет? - поделитесь результатом
  9. Like
    Tumaso отреагировална Barbanel в Скроллинг на канве   
    Доброго времени.
    Я не могу вам сказать где именно ошибка (я даже не уверен что она есть), вы пишете я С++, а у меня лишь Delphi под руками. Я скачал ваш проект и запустил ехе. К сож. он не запустился на моей матине из-за отсутсвующих библиотек rtl250.bpl
    Соотв. я не вижу как работает приложение, и как выглядят ваши фризы.
    Судя по всему вы пытаетесь сделать игрушку, либо что-то аналогичное. Делать игрушку используя один лишь FMX или VCL имхо нелогично, т.к. эти платформы не предназначены для быстрой и плавной отрисовки графики.
    Если вам реально необходима плавная отрисовка - используйте либо OpenGL либо DirectX. Вот здесь то и будет на все 100% "аппаратный скролл".
    Это и есть тот совет, "как" написать.
    Этот форум как раз для этого предназначен, и количество постов как раз тому подтверждение. Есть только одно НО:
    никто здесь не обязан сразу броситься и настрочить вам готовое решение. Если человек имеет представление где может быть проблема, и что еще более важно - имеет время и желание писать ответ - он вам ответит.
    Далеко не каждый из тех кто прочитал тему может или хочет вам (или мне, или кому-либо еще) отвечать.
    Ярослав же и так имеет чем заняться и совершенно не обязан отвечать в каждой теме. Вы не спрашиваете на форуме MSDN почему вам лично мистер Гейтс не отвечает.
    Ок, это было отступление.
    Если вы хотите примеры как использовать графические библиотеки - вам на немного другие специализированные форумы типа gamedev.ru
    Конкретно для Delphi и OpenGL я могу дать такую ссылку sulaco Здесь множество простейших примеров использования OpenGL, я в свое время именно здесь его и осваивал. 
  10. Haha
    Tumaso отреагировална POV в обновление визуальных компонентов   
    Где-то видел компонент кнопки "сделать за@#$сь"
  11. Like
    Tumaso отреагировална x11 в Как добавить «ярлыки приложения» для Android в приложении FMX   
    Может кому пригодится
    https://blog.andreamagni.eu/2019/02/how-to-add-android-app-shortcuts-to-a-fmx-application/

  12. Like
    Tumaso отреагировална Евгений Корепов в Runtime permissions in Delphi 10.3 Rio   
    Для полноценной работы вам нужно добавить параметры в вызов (иначе вы не узнаете дал ли пользователь разрешение или нет)
    PermissionsService.RequestPermissions([FPermissionWrite, FPermissionRead], nil); Вот так:
    PermissionsService.RequestPermissions([FPermissionWrite, FPermissionRead], PermissionRequestResult, ExplainReason); PermissionRequestResult - это обработка ответа пользователя
    procedure TForm.PermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); begin if (Length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) then begin // Ура! Пользователь дал разрешение на оба наших запроса. Выставялем глобальные флаги (к примеру) которые сигнализируют что можно читать/писать карту памти end else TDialogService.ShowMessage('Не возможно продолжить работу, требуемые разрешения не получены') end; И ExplainReason - если пользователь сдуру не дал разрешение, то вам нужно объяснить ему что без этого приложение работать не будет.
    procedure TForm.ExplainReason(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc); begin TDialogService.ShowMessage('Приложению нужен доступ к карте памяти для таких то целей, иначе приложение не сможет работать. Зайдите в настроки Андроид и дайте разрешение на доступ', procedure(const AResult: TModalResult) begin APostRationaleProc; end) end;  
  13. Like
    Tumaso получил реакцию от Ingalime в [Android] TAnimator.AnimateFloatWait как работает   
    Думаю проблема в том, что банально не хватает производительности аппарата, поэтому и идет пропуск тиков
  14. Like
    Tumaso отреагировална Евгений Корепов в Троит картинка при движении объекта   
    В FMX координаты Single и они никак не преобразуются компилятором в Integer. Забудьте о пикселях, они не связаны с координатами. Представьте если бы координаты считались в целых пикселях - сделали вы перемещение под HD монитор, а пользователь запустил приложение на UHD мониторе - все ваши пиксельные расчеты превратятся в тыкву.
  15. Like
    Tumaso отреагировална haword в Перевод VCL приложения на FMX. Подводные камни, стоит ли?   
    у меня тоже нет никакой ошибки на рио. пример с ошибкой можно?
  16. Like
    Tumaso отреагировална #WAMACO в Перевод VCL приложения на FMX. Подводные камни, стоит ли?   
    Хммм... не очень понятно, что у Вас там в продакшене...  у нас все работает тип-топ и все рады! и не один проект!
    может это не ваше?
  17. Like
    Tumaso отреагировална Yuriy2606 в Ошибка LocationSensor в iOS, постоянно выдает NAN.   
    Решение взято отсюда https://community.idera.com/developer-tools/general-development/f/tools-22/36905/help-delphi-locationsensor-not-giving-coordinates-anymore
    Думаю такие вещи должны быть тут.
  18. Like
    Tumaso получил реакцию от Ingalime в Как собрать apk для android 8.1 не имея устройства с такой версией android?   
    В Rio да, укажите api 28
  19. Like
    Tumaso получил реакцию от Ingalime в Как собрать apk для android 8.1 не имея устройства с такой версией android?   
    Delphi Rio:
    1. Target Platform -> Android
    2. Project -> Build
    3. Project -> Deploy
    В итоге apk для android 5/6/7/8/8.1/9 создан
  20. Like
    Tumaso отреагировална Barbanel в Запуск приложения в iOS Simulator   
    Я смутно припоминаю что где-то в аккаунте разработчика (у Эппла) нужно прописать серийники телефонов/планшетов на которых вы хотите отлаживать приложения.
    Без этого показывается тоже сообщение "Cannot connect to Mac".
    Вот здесь: https://developer.apple.com/account/ios/device/
    Также просмотрите здесь https://developer.apple.com/account/ios/profile/ все ли профайлы/сертификаты вы имеете.
    Также, после этого на новом маке вам нужно открыть xCode -> Preferences -> Accounts и загрузить эти профайлы/сертификаты на макбук. 
  21. Like
    Tumaso получил реакцию от Barbanel в Как собрать apk для android 8.1 не имея устройства с такой версией android?   
    Delphi Rio:
    1. Target Platform -> Android
    2. Project -> Build
    3. Project -> Deploy
    В итоге apk для android 5/6/7/8/8.1/9 создан
  22. Like
    Tumaso получил реакцию от Superator в Как собрать apk для android 8.1 не имея устройства с такой версией android?   
    В Rio да, укажите api 28
  23. Like
    Tumaso отреагировална RoschinSpb в Как убить кнопку кликнув на нее саму   
    Не ссоритесь девочки пож.
    Возвращаясь к сути вопроса. Основная сложность тут в том, что в Delphi нельзя разрушать экземпляр класса внутри метода этого класса за исключением тех случаев, когда метод использует только для разрушения Free, DisposeOf. Почему так, а не иначе, какие есть исключения и почему "уменяфсёработает" объяснять долго, поэтому в первом приближении предлагаю принять это за аксиому.
    Обработчики событий OnClick и пр. вызываются из методов классов, так что разрушать контрол внутри события нельзя от слова совсем. Кроме очевидных случаев типа Self.DisposeOf существуют более запутанные варианты, когда к примеру закрывает и разрушается форма, что приводит к разрушению всех дочерних контролов.
    Образно говоря, самоубийства строго запрещены, но не запрещено нанимать киллера и в качестве жертвы указывать себя. Т.е. должен быть некий другой (глобальный) объект который будет разрушать объекты, которые хотели бы самоубицо. Реализацию такого объекта можете придумать сами, или использовать TPurgatory (чистилище, в католическом учении — промежуточное место между раем и адом). Но чтобы убедиться в правильности работы можно создать своего наследника TButton в котором перекрыть деструктор и поставить в нем точку останова. При запуске в режиме отладки посмотрите стек вызова деструктора (надо быть внимательным, он может быть длиннющим), ни где в этом стеке не должно быть метода разрушаемого экземпляра. Если в Вы нашли метод разрушаемого объекта (за исключением вышеуказанных), то Ваш способ удаления работает не правильно и с некоторой долей вероятности будет приводить к AV и другим "неприятностям" которые почти невозможно отловить в режиме отладки.
  24. Thanks
    Tumaso отреагировална slav_z в Работа с атрибутами текста   
    Как сделать текст с подобными атрибутами? Очень просто!
    (Цвет текста не работает в XE8) Вот весь код:
    unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.UIConsts, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.TextLayout; type TForm1 = class(TForm) Button1: TButton; Text1: TText; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} type TTextAccess = class(TText); procedure ClearTextAttribute(Text: TText); begin TTextAccess(Text).Layout.ClearAttributes; end; procedure AddTextAttribute(Text: TText; Pos,Length: Integer; FontStyles: TFontStyles; FontColor: TAlphaColor); var Font: TFont; begin Font:=TFont.Create; Font.Assign(Text.Font); Font.Style:=FontStyles; TTextAccess(Text).Layout.AddAttribute( TTextRange.Create(Pos,Length), TTextAttribute.Create(Font,FontColor)); end; procedure TForm1.Button1Click(Sender: TObject); begin AddTextAttribute(Text1,10,17,[TFontStyle.fsBold],claRed); AddTextAttribute(Text1,34,8,[TFontStyle.fsUnderline],claBlue); AddTextAttribute(Text1,47,8,[TFontStyle.fsStrikeOut],claGreen); Text1.Repaint; end; end.  
  25. Like
    Tumaso отреагировална GASCHE в C наступающим Новым Годом!   
×
×
  • Создать...