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

Лидеры

  1. sinuke

    sinuke

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


    • Баллы

      6

    • Постов

      190


  2. FREEFAR

    FREEFAR

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


    • Баллы

      2

    • Постов

      255


  3. Barbanel

    Barbanel

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


    • Баллы

      2

    • Постов

      419


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

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

    Модераторы


    • Баллы

      1

    • Постов

      2 517


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

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

  1. Привет Вчера была выпущена финальная версия RAD Studio 10.3 Rio, в которой много нововведений для Андройд. Но вот про статусбар снова "забыли". Хотя не совсем, добавили файлик styles-v21.xml, который превносит новую материальную тему на устройствах под управлением Android 5.0 и выше вместо устаревшей Holo. Но все равно свойство формы SystemStatusBar так и не реализовали. Поэтому при запуске статус бар будет окрашен в унылый серый цвет (см. скриншот). Для того, чтобы сделать статусбар прозрачным и поместить под него содержимое формы, то достаточно сделать несколько несложных шагов: 1. Убираем из деплоймента (Project -> Deployment) файл styles-v21.xml (можно просто снять галочку рядом с именем файла) 2. Добавить в деплоймент проекта новый файл styles-v21.xml (styles-v21.zip) и прописать ему путь res\values-v21\ 3. В результате получится следующий вид P.S. В новом файле по сравнению со стандартным добавилась строчка <item name="android:windowTranslucentStatus">true</item>, которая и отвечает за прозрачный статусбар P.P.S. Чтобы определять размер статус бара, все также можно воспользоваться решеним ZuBy - http://blog.rzaripov.kz/2016/12/android-ios.html P.P.P.S. Тестовый проектик - StatusBar.zip
    6 баллов
  2. Попробуйте перед снятием скриншота насильно применять стиль всех для элементов. Вызывайте для каждого контрола процедуру ApplyStyleLookup();
    2 балла
  3. Всем доброго времени суток. Казалось бы. Во время разработки и перед тем как подписали приложение сертификатом Distribution, пуши приходили норм. Но после того как прошли аудит Apple пуши куда-то пропали. FCM возвращал ошибку InvalidRegistration. Оказалось все достаточно просто. На сервере с которого мы отправляем пуш, В php скрипте, который отправляет пуши надо выставить sandbox = false Ура! Всем удачи)
    1 балл
  4. В общем, поставил себе Delphi.10.2.3, всё работает без проблем, запросы взлетают, и не падают, ура! Всем спасибо за помощь)
    1 балл
  5. В общем забороли. Дело вот в чем. Само приложение общается с сервером одним (там сертификат норм), а вот сервис который прикручен к приложению общается с другим сервером. Сервис написан нативно. Но писали его до марта 2017. А значит возможно писал не выдержав новые требования. Решение: выпилил из приложения сервис))) Профит
    1 балл
  6. сервер с которым общается приложение либо не использует https либо сертификат настроен не правильно
    1 балл
  7. Евгений Корепов

    Поток на клиенте

    Накидал вам пример с использование потокобезопасной очереди. Логика работы такая - поток получает данные и заталкивает их в очередь, в главной форме, в таймере (можно изменить на OnIdle), проверяем очередь на наличие данных, если данные есть, то обрабатываем их. Обратите внимание на процедуру создания очереди - FQueue:=TThreadedQueue<TRec_Data>.Create(100, 1000, 10); где первый параметр размер очереди (100), второй таймаут заталкивания данных в очередь (1000мс = 1сек), третьй таймаут вытаскивания из очереди (10 мс - маленький, чтоб таймер у нас не подвисал в ожидании). Вот код проекта целиком unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Generics.Collections, IdTCPClient, IdGlobal, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo; type TRec_Data = record Flag: array[0..20] of char; end; TMyThread = class(TThread) private Progress: string; Client : TIdTCPClient; FQueue : TThreadedQueue<TRec_Data>; protected procedure Execute; override; public constructor Create(const AQueue : TThreadedQueue<TRec_Data>); destructor Destroy; override; end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FQueue : TThreadedQueue<TRec_Data>; FMyThread : TMyThread; Timer : TTimer; procedure OnTimer(Sender: TObject); public Memo1: TMemo; { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); begin FQueue:=TThreadedQueue<TRec_Data>.Create(100, 1000, 10); Timer:=TTimer.Create(Self); Timer.Interval:=100; Timer.OnTimer:=OnTimer; Timer.Enabled:=True; FMyThread:=TMyThread.Create(FQueue); FMyThread.Start; end; procedure TForm1.FormDestroy(Sender: TObject); begin if Assigned(FMyThread) then begin FMyThread.Terminate; FMyThread.WaitFor; FMyThread.Free end; if Assigned(Timer) then Timer.Free; if Assigned(FQueue) then FQueue.Free; end; procedure TForm1.OnTimer(Sender: TObject); Var ARec : TRec_Data; begin // while FQueue.PopItem(ARec) = TWaitResult.wrSignaled do или if FQueue.PopItem(ARec) = TWaitResult.wrSignaled then Form1.Memo1.Lines.Insert(0, ARec.Flag); end; constructor TMyThread.Create(const AQueue : TThreadedQueue<TRec_Data>); var Rec: TRec_Data; Buffer: TIdBytes; begin inherited Create(true); FQueue:=AQueue; Client := TIdTCPClient.Create(nil); Client.Host := '127.0.0.1'; Client.Port := 6000; Client.Connect; // Передаем данные if Client.Connected = True then begin Rec.Flag := 'addUser'; Buffer := RawToBytes(Rec, SizeOf(Rec)); Client.IOHandler.Write(Buffer); end; end; destructor TMyThread.Destroy; begin if Assigned(Client) then Client.Free; inherited; end; procedure TMyThread.Execute; var Rec: TRec_Data; Buffer: TIdBytes; begin while Not Terminated do begin if Client.Connected then begin Client.IOHandler.ReadBytes(Buffer, SizeOf(Rec)); BytesToRaw(Buffer, Rec, SizeOf(Rec)); Progress := Rec.Flag; // Synchronize(SetProgress); FQueue.PushItem(Rec); end else Client.Connect; TThread.Sleep(10); end; end; end. Так же обратите внимание, я переписал ваш метод Execute на правильный. В вашей реализации, поток завершался при потере соединения.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...