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

IgorK11

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

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

  • Посещение

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

    1

IgorK11 стал победителем дня 1 сентября 2020

IgorK11 имел наиболее популярный контент!

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения IgorK11

  1. Отладка показала что при первом фокусе при использовании vkbdhelper у Edit IsFocused=False. Соответственно перестает работать процедура ResetFocus FMX.Controls. А так как в приложении используется аналитика vkHardwareBack с последующим обнулением Key то фокус на Edit.ResetFocus не сбрасывался. Пока убрал обнуление Key при активном Edit, все работает как надо. if (Focused<>nil) then if Focused.GetObject.ClassName = 'TEdit' ...
  2. Как это будет выглядеть например на форме авторизации или с нижнем фиксированном полем ввода сообщения в чате? vkbdhelper в общем то полностью справлялся с задачей, но после перехода на Александрию начал чудить. Кстати клавиатура не закрывается при старте приложения, если в процессе перейти на другой Edit (если он есть по соседству), то потом всё работает как надо, если его нет, то вообще никак клавиатуру не закрыть. Еще ранее был конечно баг с появленим скрытой MasterButton Multiview при первом фокусе Edit, но он не сильно напрягал.
  3. Спасибо за информацию, пока всё ок.
  4. Подскажите как реализовать fsBold на Text выделенной строки? OnUpdateObjects как у listview нет, цвет текста меняю в стиле строки через TActiveStyleTextObject по триггеру Selected. Менять имя стиля строки в onChange на выделенную и бегать в цикле по всем стальным "снимать выделение" не хочется. Что я не увидел?
  5. С недавнего времени при загрузке обновлении приложений получаю: Целевой уровень API для вашего приложения – 28. Чтобы обеспечить необходимую производительность и безопасность, целевой уровень API должен быть не ниже 29. С августа 2020 года целевая версия новых приложений должна быть не менее Android 10 (API уровня 29)... при компиляции в манифесте все равно <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" /> пробовал принудительно в AndroidManifest.template.xml ставить targetSdkVersion 29, приложение вылетает при старте. 10.4. вообще корявое г... Что еще можно сделать?
  6. набросал подробную инструкцию как делал на 10.3 собрав инфу с комментариев: !!! Иконки в AppIcon.appiconset должны быть без прозрачности и альфа-канала, иначе получите ошибку ITMS-90717:Invalid App Store Icon. 1. распаковываем iOS1024fix.zip 2. заменяем иконки в asset_catalog\Assets.xcassets\AppIcon.appiconset\ и asset_catalog\Assets.xcassets\LaunchScreenImage.imageset\ 3. если надо меняем цвет фона в asset_catalog\Assets.xcassets\LaunchScreenBackgroundColor.colorset\Contents.json 4. копируем папку asset_catalog на мак 5. в терминале перейти в неё, если скопировали на рабочий стол команда: cd desktop/asset_catalog 6. выполняем команду: actool --output-format human-readable-text --notices --warnings --app-icon AppIcon --output-partial-info-plist compilation_results/partial_Info.plist --target-device iphone --target-device ipad --minimum-deployment-target 11.0 --platform iphoneos --product-type com.apple.product-type.application --compile "compilation_results" "Assets.xcassets" в asset_catalog\compilation_results появятся 4 файла 7. копируем папку (или эти 4 файла) обратно c мака 8. в delphi компилируем ipa (Release / iOS Device 64-bit / Application Store) 9. Для удобства создадим папку "ios1024" в папке проекта 10. копируем файл iOSDevice64\Release\<ИмяПроекта>.Info.plist в папку "ios1024" убрав из имени "<ИмяПроекта>.", имя файла должно быть "Info.plist", регистр важен! 11. копируем из asset_catalog\compilation_results 4 файла в папку "ios1024" 12. копируем папку LaunchScreen.storyboardc в "ios1024" (именно папку а не её содержимое) 13. Редактируем Info.plist 13.1. Меняем: <key>CFBundleIconFiles</key> <array> <string>ios_app_ico57</string> <string>ios_app_ico87</string> <string>ios_app_ico114</string> <string>ios_app_ico1024</string> <string>ios_app_ico60</string> <string>ios_app_ico120</string> <string>ios_app_ico180</string> <string>ios_spot_29</string> <string>ios_spot_40</string> <string>ios_spot_58</string> <string>ios_spot_80</string> <string>ios_spot_120</string> </array> на <key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> <key>CFBundleIcons~ipad</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> <string>AppIcon76x76</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> 13.2. Удаляем в двух местах строки: <key>CFBundleResourceSpecification</key> <string>ResourceRules.plist</string> 13.3. После строк: <key>DTPlatformName</key> <string>iphoneos</string> добавляем: <key>DTPlatformVersion</key> <string>13.5</string> 14. Заходим в delphi->Project->Deploment 15. Проверяем что бы выбран "iOS Device 64-bit" 16. Снимаем галочки с: (имена файлов будут ваши, ориентируйтесь по Option->Application->Icons) 17. в Deploment добавляем все файлы папки "ios1024" 18. изменяем Remote Path 5-и строкам: 19. компилируем IPA и отправляем через Transporter на маке !!! При изменении версии билда в проекте не забываем изменить его в CFBundleVersion "ios1024"\Info.plist iOS1024fix.zip
  7. IgorK11

    TListView Gesture longtap

    android, есть listview, при нажатии на элемент в строке по ItemClickEx открывается другая закладка в приложении. Теперь задача добавить другие действия по longtap, не открывая закладку . После Gesture вызывается: tap, click, change. если Gesture не срабатывает(обычное нажатие) то в Tap и click Selected еще не обновленный, да ещё следить за сторонними нажатиями нужно. Если Gesture срабатывает то идет два change, что не подходит так как откроется закладка на первом change. Уже вроде всё перепробовал не могу понять как сделать Что я пропустил? накидал небольшую тестилку событий: clic: LongTap: Scroll: testLVGest.zip
  8. IgorK11

    TSpinBox

    У всех не целых чисел вылезают левые значение. Подскажите пожалуйся как это победить? Delphi 10.3 Version 26.0.36039.7899
  9. Про подводные камни разных кодировок в TEncoding.Default на win/android забыли. Код выше не будет работать если закодировать на одной ос и раскодировать на другой, немного подправил, еще есть расхождение кода символа перевода строки и соответственно разной длины передаваемого результата кодирования с разных OS, но пока проблем в тестировании не возникало: function IntEncode2(S, pwd: String): String; var i, iimax: integer; B, BPwd, Bls: TBytes; begin {$IF NOT defined(MSWINDOWS)} S:= Utf8ToAnsi(S); {$ENDIF} B:= TEncoding.ANSI.GetBytes(S); BPwd:= TEncoding.ANSI.GetBytes(pwd); iimax:= High(BPwd); for i:= Low(B) to High(B) do begin B[i]:= B[i] Xor BPwd[i Mod iimax]; end; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; pwd передается уже в md5 При декодировании использую result:= TEncoding.ANSI.GetString(B);
  10. Так? function IntEncode(S, pwd: String): String; var i, iimax: integer; B, BPwd: TBytes; begin B:= TEncoding.Default.GetBytes(S); BPwd:= TEncoding.Default.GetBytes(System.Hash.THashMD5.GetHashString(pwd)); iimax:= High(BPwd); for i:= Low(B) to High(B) do begin B[i]:= B[i] Xor BPwd[i Mod iimax]; end; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; Чайниковский вопрос, как проще добавить в начало TBytes другой TBytes?
  11. Хочу использовать свой алгоритм в приложении, какие могут быть подводные камни потом в работе? Пакеты потом будут по HTTP ходить. Расшифровка на php. function IntEncode(S, pwd: String): String; var i, iimax: integer; SS, SSS, Sln : String; begin pwd:=System.Hash.THashMD5.GetHashString(pwd); SS:=''; iimax:= Length(pwd); {$IFDEF ANDROID} for i:= 0 to Length(S)-1 do begin {$ELSE} for i:= 1 to Length(S) do begin {$ENDIF} SS:=SS + Chr(Ord(S[i]) Xor Ord(pwd[i Mod iimax])); end; result:= TNetEncoding.Base64.Encode(SS); end;
  12. манифест <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> не работает, FPermissionBAT:= JStringToString(TJManifest_permission.JavaClass.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); PermissionsService.RequestPermissions([FPermissionBAT], PermissionResult, PermissionDisplay); не работает, кстати если использовать для теста права на CAMERA вместо REQUEST_IGNORE_BATTERY_OPTIMIZATIONS - работает LIntent:= TJIntent.Create; LIntent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); LIntent.setData(StrToJURI('package:IAApp')); TAndroidHelper.Activity.startActivity(LIntent); Ошибка: android.content.ActivityNotFoundException: No Activity found to handle intent. без LIntent.setData(StrToJURI('package:IAApp')); открывается ОптимизацияРасхода но приложений/служб там столько что пользователь никогда не полезет искать мое. Не так передаю имя приложения?
  13. Дело немного сдвинулось. Если на S9 в Настройки-Приложение-[МоеПриложение]-Батарея-ОптимизацияРасхода-Все оно же Настройки-Приложения-...-ОсобыеПраваДоступа-ОптимизацияРасхода-Все убрать оптимизацию с своего приложения, служба не закрывается и idTCPClient кстати не засыпает. на A5 служба работает как надо, но idTCPClient засыпает после отключения телефона в промежутке от 3 до 5 минут, а после включения телефона просыпается и продолжает отсылать трафик, делать при этом ничего не нужно. Вопрос остается открытым, что добавить в манифест что бы при установке не ставилась "оптимизация расхода" на мое приложение?
  14. Получилось сделать на A6 (android7), но samsung S9 (android9) упорно удаляет сервис. В app: в сервисе: Так же при выключенном телефоне не ратает idTCPClient, точнее работает но иногда выкидывает ошибки. Есть идеи как побороть 9 андроид? Может в манифест чего добавить что бы 9ка не закрывала службу?
×
×
  • Создать...