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

gonzales

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

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

  • Посещение

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

    27

Весь контент gonzales

  1. Доброго времени суток! Помогите плиз, чет я запарился, не могу найти решение. Мне нужно сделать GET запрос к серверу с параметрами, содержащими русские буквы. Примерно вот такой 'method=update&OrderNum='+ordernum+'&FieldName='+grid.Columns[ACol].Header+'&FieldValue='+ UTF8Encode('русские буквы'); Запрос передаю через idHTTP. UTF8Encode не работает, или я им пользоваться не умею. Подскажите, как правильно сделать?
  2. Правильно ли я Вас понял, Вы имеете в виду, что если у меня будет несколько объектов типа TForm2 - то далеко не факт, что экземпляр form2 вообще существует. Но поскольку этот экземпляр - единственный, то такой подход применим.
  3. Ничего лучше Form1.Free - я не придумал. Но работает без сбоев. Уважаемый krapotkin, не могли бы Вы пояснить более развернуто Вашу мысль. Я во многих ваших ответах встречаю, что обращаться из класса к экземпляру класса - это плохо. Но не понятно, почему, что плохого произойдет при таком обращении? Например вот такой код procedure TForm2.Button2Click(Sender: TObject); begin form2.button2.text:='test'; end; Вы везде указываете, что такая запись некорректная и правильно было бы писать button2.text:='test';
  4. Тоже остановился на этом варианте. Пробовал и такой вариант - почему-то иногда падает приложение. Не разобрался, почему. Перешел на r.Free. Вроде все корректно
  5. Доброго времени суток! Знаю, что тема поднималась 100500 раз, сам писал в них, но тем не менее... После перехода на 10.4 стал замечать, что приложение на мобильных платформах стало частенько зависать или выдавать сообщения External Exception xx. Стал разбираться и заметил, что такое поведение часто происходит после уничтожения объектов или форм. Прогуглив тему динамического удаления объектов нашел информацию вот такого характера Now, that being said, in RAD Studio 10.4, Embarcadero has removed object ARC handling completely, going back to the traditional memory management model (which they now refer to as "Unified Memory Management"). In which case, TObject.Free() and FreeAndNil() now behave the same as they always have on non-mobile platforms, but now on all platforms equally. So your original code will now work as expected, you do not need to switch to TObject.DisposeOf() in 10.4 onwards (though, you can if you want to, it will behave exactly like TObject.Free(), and give you the desired effect if you need to support 10.3 and earlier). То есть, если я правильно понимаю, Эмба отказалась от ARC и вернулась к традиционной модели управления памятью. И теперь нужно обратно вернуться к TObject.Free(), еще компилятор стал ругаться, что метод Release помечен, как deprecated - то есть в скором времени исчезнет. В связи с этим два вопроса 1. Может ли конструкция r.DisposeOff; r:=nill; приводить к зависанию программы? Нужно ли теперь заменить все на r.Free; 2. Как теперь удалить форму, кликнув на кнопку, которая расположена на этой форме? procedure TForm30.BlackRectClick(Sender: TObject); begin form1.BlackRect.Visible := false; Form30.Close; //Form30.Free; Form30.Release; end; Такая конструкция работает, но часто программа зависает procedure TForm30.BlackRectClick(Sender: TObject); begin form1.BlackRect.Visible := false; Form30.Close; Form30.Free; //Form30.Release; end; Такая конструкция крашит программу, но это и понятно, удаляем сук, на котором сидим. Но если Release перестанет работать, как тогда удалить форму?
  6. Долго бился со следующим, есть три типа устройств: 1. где отсутствует NavBar физически, 2. где он есть и всегда включен, 3. где он есть, но его можно выключить в настройках. В результате добился нормальной работы окраски NavBar на всех типах. Немного изменил код, приведенный Равилем из примера Update2 function hasNavbar(out navBarHeight: Integer): boolean; // uses Androidapi.JNI.Util, {$IFDEF ANDROID} var Window: JWindowExt; realSize: JPoint; screenSize: JPoint; metrics: JDisplayMetrics; difference, resourceID: Integer; {$ENDIF} begin Result := false; navBarHeight := 0; {$IFDEF ANDROID} metrics := TJDisplayMetrics.Create; realSize := TJPoint.Create; screenSize := TJPoint.Create; Window := GetWindowExt; Window.getWindowManager.getDefaultDisplay.getRealMetrics(metrics); realSize.x := metrics.widthPixels; realSize.y := metrics.heightPixels; Window.getWindowManager.getDefaultDisplay.getSize(screenSize); if realSize.y <> screenSize.y then begin difference := realSize.y - screenSize.y; resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navBarHeight := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID)); if navBarHeight > 0 then if difference < navBarHeight then begin navBarHeight := 0; Result := false; end else Result := true; end else begin navBarHeight := 0; Result := false; end; {$ENDIF} end;
  7. Ну судя по всему вот так function TSplashForm.GetStatusBarHeight: Single; {$IFDEF IOS} var LResult: PSingle; {$ENDIF} begin {$IFDEF IOS} if FStatusBarChecked then Result := FStatusBarHeight else begin Result := 0; LResult := @Result; TThread.Synchronize(nil, procedure() begin if (not FStatusBarChecked) and (TiOSHelper.SharedApplication.windows.count > 0) and Assigned(TUIWindow.Wrap(TiOSHelper.SharedApplication.windows.objectAtIndex(0)).rootViewController) and Assigned(TUIWindow.Wrap(TiOSHelper.SharedApplication.windows.objectAtIndex(0)).rootViewController.view) then begin FStatusBarHeight := TUIWindow.Wrap(TiOSHelper.SharedApplication.windows.objectAtIndex(0)).safeAreaLayoutGuide.layoutFrame.origin.y; FStatusBarChecked := True; end; LResult^ := FStatusBarHeight; end); end; {$ELSE} Result := 0; {$ENDIF} end; На 8-ом возвращает 20, как и должно быть. 10 к сожалению нет. Может кто-нибудь проверить?
  8. А размер статусбара нельзя таким образом узнать? Если я правильно понял, на айфонах до 10-го он должен быть 20 пикселей, а начиная с 10-го - 44. Но как узнать это программно? На свифте должно быть что-то типа CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height; А как переделать на делфи?
  9. Да, и еще в догонку, может кто знает,как избавиться от затенения статусбара?
  10. gonzales

    StatusBar на Android в 10.4.1

    Я правильно понимаю, что и в 10.4.1 так и не исправлена ситуация с покраской системного статусбара? Свойство формы SystemStatusBar, которое прекрасно работает в iOS не отрабатывает в Android Работает конечно вариант исправить styles-v21.xml, в частности <item name="android:colorPrimaryDark">#224164</item> - исправляет цвет статусбара (ну и системный цвет разумеется) <item name="android:windowTranslucentStatus">true</item> - кладет статусбар оверлапом на форму <item name="android:statusBarColor">@android:color/transparent</item> - делает статусбар полупрозрачным Но, если я хочу использовать какие-то скины для приложения - то вариант жестко зашивать цвет в xml - не вариант Или я все таки что-то упустил?
  11. Доброго времени суток! Столкнулся с очередной неприятностью при попытке выложить приложение в АппСтор. Получил отказ со следующим уведомлением We noticed an issue in your app that contributes to a lower quality user experience than Apple users expect: - Your app was not optimized to support the iPhone X and newer devices screen size or resolution. Specifically, parts of your app’s UI were overlapped by the ’notch’ area of the device. Если перевести на русский, то звучит примерно так: Мы заметили проблему в вашем приложении, которая способствует более низкому качеству пользовательского опыта, чем ожидают пользователи Apple: - Ваше приложение не было оптимизировано для поддержки iPhone X и более новых устройств размера экрана или разрешения. В частности, части пользовательского интерфейса вашего приложения перекрывались областью " выемки’ устройства. Я так понимаю, проблема с "бровью", которая перекрывает часть интерфейса (это конечно полный п.., но что-то надо делать))) Работаю в 10.4.1. Кто-то сталкивался с подобным, как-то в delphi это лечится? У меня даже пока идей нет, что можно с этим сделать. Сдвигать все элементы интерфейса вниз, но как тогда понять, что приложение открыто на бровастых устройствах? В общем прошу помощи, если кто знает....
  12. gonzales

    [IOS]Notification.Number

    сорри, вместо &badge поставить цифру, которая должна отображаться
  13. gonzales

    [IOS]Notification.Number

    Нужно внести изменение к код php сервера вместо строки $fields['notification'] = array('body' => $text, 'title' => $title); нужно вставить $fields['notification'] = array('body' => $text, 'title' => $title, 'sound' => 'default', 'badge' => $badge);
  14. gonzales

    [IOS]Notification.Number

    Чтобы в iOS появилась наклейка с цифрой на иконке программы нужно добавить в JSON запроса пуша в объект notification пару badge=цифра
  15. По итогу все срослось. Для сборки проекта в 10.4.1. необходимо удалить из папки с проектом папки iOSDevice64, LaunchScreen.TemplateiOS, и файлы Entitlement.TemplateiOS.xml и info.plist.TemplateiOS.xml. После чего пересобрать проект, создадутся новые файлы Entitlement.TemplateiOS.xml и info.plist.TemplateiOS.xml в которых будут необходимые директивы. У меня после этого пропали проблемы с размером экрана и AppStoreConnect без проблем съел мой ipa файл, при этом показал, что есть включенные материалы - значок приложения. А ТЕПЕРЬ ЛОЖЕЧКА КАКККИ))) При сборке приложения в 10.4.1 не применяется Заставка, включается стандартная, что бы я не делал, даже в новом пустом проекте, выставляю свою заставку, запускаю, а заставка все равно стандартная, также не работает цвет экрана заставки, корректно отрабатывают только иконки. Я порылся во всех местах, где это могло быть, вроде все правильно, в Deployment файлы правильные, на маке в папке LaunchScreenImage.imageset файлы правильные, а вот что должно быть дальше - не знаю(((
  16. Похоже все таки не до конца прикрутили работу с AppStore. Попробовал по приколу выложить приложение, XCode у меня 11.3.1, получаю ошибку, Invalid Bungle. Your app supports Multitasking on iPad, so you must include the UILaunchStoruboardName key in your bungle. Кто-нить понимает, о чем речь?
  17. Да, очень похоже. А не подскажете, как это правильно сделать? Нужно добавлять в проект формы или создавать их и перетаскивать в новые формы код? У меня просто более 20 форм в проекте)))
  18. поставил 10.4.1. В разделе иконок появился значек 1024х1024. НООООО приложение теперь выводится с черными полосками сверху и снизу))))), Раньше у меня ScreenSize был 320х400, а теперь 320х312. Это просто какой-то ПИ... уже слов не хватает(((( Может кто знает, хотя я понимаю, что никто не знает)), как это лечить? На 10.4 все выводилось на полный экран
  19. Вы были правы, работает не на всех телефонах. На некоторых вообще не показывает форму((
  20. Причем, что характерно, при поворачивании экрана все встает на свои места, но в момент создания формы есть полоска.
  21. У меня не получилось обмануть судьбу(((. На скрине видно, что полупрозрачный прямоугольник "не дотягивается" до нижней кромки экрана. В приложении тестовый проект. Если не трудно, посмотрите пожалуйста, может я что-то упустил Новая папка (4).zip
  22. В оригинальной инструкции нашел вот такие приписки NOTE: Please note the use of the 'app-icon' option to pass the name of the 'app icon set' that is aimed to be used to provide the icons used by your app. Compiling an 'app icon set' requires the use of the 'output-partial-info-plist' option. The path passed in the 'output-partial-info-plist' option is aimed to store: A partial version of the 'Info.plist' file containing all declarations needed for the icons used by your app. Its content needs to be copied to the original version of the 'Info.plist' file. A copy of the smallest app icon for iPhone devices (the '120x120 px app icon') and a copy of the smallest app icon for iPad devices (the '152x152 px app icon'). These copies are automatically extracted from the 'asset catalog' and need to be stored in the app bundle's root folder. Только не совсем понял, о чем они)))
×
×
  • Создать...