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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      4

    • Постов

      2 124


  2. alexbirukov

    alexbirukov

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


    • Баллы

      2

    • Постов

      65


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      1

    • Постов

      2 517


Популярный контент

Показан контент с высокой репутацией 18.09.2015 в Сообщения

  1. Вообще Release. Он выполняет отложенное удаление формы через н-ое количество милисекунд. Поэтому по идеи: Вызываем Release, Очищаем ссылки на форму (обнуляем ваши переменные/поля, держащие форму) Ядерная комбинация: FormObject.Release; FormObject.DisposeOf; FormObject := nil; Форму удаляет, но Release в этом случае не нужен. Это код метода Release. if not (TFmxFormState.Released in FFormState) then begin FWinService.ReleaseWindow(Self); Screen.RemoveForm(Self); FFormState := FFormState + [TFmxFormState.Released]; if TFmxFormState.Engaged in FormState then begin if not (csDesigning in ComponentState) then FWinService.HideWindow(Self); end; inherited Release; TMessageManager.DefaultManager.SendMessage(Self, TFormReleasedMessage.Create); end;
    1 балл
  2. Из обычной формы я записываю допустим в переменную, что надо в через 10 минут отправить запрос, в итоге я должен спокойно забыть о приложении и просто закрыть его ну и заблокировать экран телефона, а в это время подался знак на включение таймера в сервисе ну и по прошествию времени, отправляется запрос. Впрочем обычная ситуация общение приложение-сервис-приложение делается через Intent
    1 балл
  3. Решили проблему? Если нет, вот оф. документация по этому вопросу. Я же просто кидал эти две библиотеки в папку проекта и всё отлично начинало работать. Добавлять сами библиотеки в конечный проект в Deployment, не надо, иначе не сможете опубликовать проект в AppStore.
    1 балл
  4. Разработчик: Александр Бирюков Ссылки на приложения: iOS и Android Описание: Алгоритм работы: Пользователь попавший в ДТП создает заявку или нажатием кнопки SOS в экстренной ситуации отправляет экстренное сообщение на сервер. Модераторы получают СМС уведомления о произошедшей аварии. После модерации пользователи системы получают СМС уведомления с адресом аварии и Push уведомления.
    1 балл
  5. Добрый день, Делаете стиль для итема, в виде панельки Устаналиваете в лист боксе размер итема: ItemHeight, ItemWidth. Для всех итемов устанавливаете ваш стиль Все готово. P.S. TGridLayout не лучший выбор при большом количестве итемов. Так как листбокс реально грузит стили только для видимой части итемов. И при прокрутке только меняет стили местами. А TGridLayout загрузит все элементы. В итоге проигрышь по памяти и по скорости.
    1 балл
  6. Открытие любого файла в подходящем приложении в операционной системе Андроид выполняются одинаковым способом. Путем посылки намерения (Интент) с указанием файла и типа данных. Далее система ищет по указанному типу файла, какие приложения зарегистрированы на обработку файлов этого типа, Если приложение, которое может обработать этот файл, одно, то запускает активити приложения и передает туда ваш файл/данные. Если приложений несколько - запускает диалоговое окно выбора приложения, которое будет выполнять обработку вашего файла. Резюмируя это, смотрим на код: uses System.IOUtils, FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText; procedure TForm7.btnOpenPDFClick(Sender: TObject); const SAMPLE_PDF_FILENAME = 'example.pdf'; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; PDFFileName: string; begin PDFFileName := TPath.Combine(TPath.GetDocumentsPath, SAMPLE_PDF_FILENAME); { Внутренний доступ} Uri := StrToJURI(PDFFileName); // Формируем намерение об открытии файла в стандартном приложении OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri); // Устанавливаем тип данных OpenLinkIntent.setType(StringToJString('application/pdf')); OpenLinkIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP); // Запускаем приложение и передаем ему наше намерение try SharedActivity.startActivity(OpenLinkIntent); except on E: Exception do ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf'); end; end; В этом код pdf файл берется из самого пакета приложения (я включил pdf файл в пакет приложения). Если вам нужно вытащить файл в любом другом месте, просто укажите в PDFFileName полный путь к файлу в файловой системе вашего устройства. Проект доступен тут: OpenPDF.zip
    1 балл
  7. Вся отрисовка выполняется в главном потоке приложения. Поэтому, если вы пытаетесь выполнить скачивание файла в основном потоке, то вся отрисовка приостановится до момента окончания вашей операции. Поэтому правило хорошего тона - это вынесение долгих операций (загрузка, ответ авторизации и тд) в отдельный поток. Примерный код приведен ниже: 1. Создаем отдельный поток, в котором вы будите скачивать файл (я поставил для эмуляции скачивания просто паузу на 5 секунд): type TMyTask = class (TThread) protected FOnTaskStarted: TThreadMethod; FOnTaskFinished: TThreadMethod; procedure DoStarted; procedure DoFinished; procedure Execute; override; public property OnTaskStarted: TThreadMethod read FOnTaskStarted write FOnTaskStarted; property OnTaskFinished: TThreadMethod read FOnTaskFinished write FOnTaskFinished; end; Реализация: { TMyTask } procedure TMyTask.DoFinished; begin if Assigned(OnTaskFinished) then OnTaskFinished; end; procedure TMyTask.DoStarted; begin if Assigned(OnTaskStarted) then OnTaskStarted; end; procedure TMyTask.Execute; begin Synchronize(DoStarted); try Sleep(5000); // Эмуляция выполнения 5 Секундной задачи finally Synchronize(DoFinished); end; end; Само использование такого потока будет следующим (в моем примере после выполнения операции, появится сообщение): TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private FMyTask: TMyTask; public procedure DoTaskStarted; // Callback, вызываемый в начале старта операции procedure DoTaskFinished; // Callback, вызываемый в конце выполнения операции. Аналог OnTerminate procedure StartMyTask; // Запуск задачи end; procedure TForm3.Button1Click(Sender: TObject); begin StartMyTask; end; procedure TForm3.DoTaskStarted; begin end; procedure TForm3.DoTaskFinished; begin ShowMessage('Выполнение задачи окончено'); end; procedure TForm3.StartMyTask; begin if FMyTask <> nil then begin FMyTasl.OnTaskStarted := nil; FMyTasl.OnTaskFinished := nil; FMyTask.Free; end; FMyTask := TMyTask.Create(True); FMyTask.OnTaskStarted := DoTaskStarted; FMyTask.OnTaskFinished := DoTaskFinished; FMyTask.Start; end; При таком подходе главный поток не будет блокироваться и будет корректно отрисовываться и работать.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...