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

Лидеры

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

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

    Модераторы


    • Баллы

      6

    • Постов

      2 517


  2. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 185


  3. Brovin Yaroslav

    Brovin Yaroslav

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


    • Баллы

      1

    • Постов

      2 124


  4. brunnengi

    brunnengi

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


    • Баллы

      1

    • Постов

      293


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

Показан контент с высокой репутацией 30.06.2016 во всех областях

  1. я еще раз положу рабочий проект для Delphi Berlin. там есть отличия от общепринятого метода ListViewTestBerlin.7z
    1 балл
  2. если делаешь release то потом purgatory косячит под iOS при каких-то внутренних удалениях стилей да и вообще динамический add/remove controls под иосью какая-то тяжко решаемая задача
    1 балл
  3. TThread.Synchronize; Вызывать из кода обработчика таймера Чтобы понять, как это происходит, нужно почитать о том, как работает UI Thread (например тут). В этой статье, как раз рассказывает, что такое лупер и как организуется "якобы многозадачность" (отрисовка, обработка событий и тд) в рамках одного треда. Синхронизация не передает контекст. В данном случае контекст привязан к потоку. Он является частью потока. Поэтому по сути, когда вы синхронизируете (по сути просто вызываете ваш код из лупера, то по сути вы уже работаете в контексте :-) Если заглянуть в исходники андроида: public final class Looper { // Вырезан код public static void loop() { final Looper me = myLooper(); if (me == null) { throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread."); } final MessageQueue queue = me.mQueue; // Make sure the identity of this thread is that of the local process, // and keep track of what that identity token actually is. Binder.clearCallingIdentity(); final long ident = Binder.clearCallingIdentity(); for (;;) { Message msg = queue.next(); // might block if (msg == null) { // No message indicates that the message queue is quitting. return; } // This must be in a local variable, in case a UI event sets the logger Printer logging = me.mLogging; if (logging != null) { logging.println(">>>>> Dispatching to " + msg.target + " " + msg.callback + ": " + msg.what); } msg.target.dispatchMessage(msg); if (logging != null) { logging.println("<<<<< Finished to " + msg.target + " " + msg.callback); } // Make sure that during the course of dispatching the // identity of the thread wasn't corrupted. final long newIdent = Binder.clearCallingIdentity(); if (ident != newIdent) { Log.wtf(TAG, "Thread identity changed from 0x" + Long.toHexString(ident) + " to 0x" + Long.toHexString(newIdent) + " while dispatching to " + msg.target.getClass().getName() + " " + msg.callback + " what=" + msg.what); } msg.recycleUnchecked(); } } ///------------------------------ } То есть по сути это просто бесконечный цикл, в котором из очереди вытаскиваются задания и выполняются по очереди. Как только возникает событие, оно просто складывается в очередь, и лупер в UI треде его просто обрабатывает. Когда вы вызываете TThread.Synchronize, то в конечном итоге ваш код завернется в сообщение, которое будет вызвано из этого куска кода
    1 балл
  4. если брать реализацию для андроида, то есть решение без сенсора в этой теме там в первом сообщении, вложение
    1 балл
  5. Нельзя положить поверх карты (андроид), я так понимаю что это проблема только программирования на Андроид из под делфи, коли в других программ под андроид нормально идет? попробую, посмотрю что из этого выйдет. А варианта перерисовывать в самом компоненте нет?
    1 балл
  6. Ах да я кажется понял... Загружаю данные на одном потоке, и при скроллинге загружаю картинки еще на одном потоке... Так правильно будет кажется...
    1 балл
  7. Привет Всем! Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге. я взял картинки пользователей этого форума Seattle LVdynamicLoadBitmap.zip Berlin LVdynamicLoadBitmap(Berlin).zip
    1 балл
  8. Нужно использовать myObject.Release, а не Free. Только обратите внимание, что Release - это отложенное уничтожение, т.е. моментально компонент исчезает с формы, а вот уничтожится - после, когда-нибудь, когда до него дойдет очередь. Помимо этого, если ссылка на объект есть где-то в поле класса, то нужно заnil-ить ее, дабы уменьшить счетчик ссылок.
    1 балл
  9. I Recommend threading it, here is a quick threading example that works for fmx. simple project with a button and a memo, uses System.Net.Httpclientcomponent procedure TForm1.Button1Click (Sender: TObject); begin TThread.CreateAnonymousThread (procedure () var body: tstringstream; http: tnethttpclient; begin http: = TNetHTTPClient.Create (nil); body: = TStringStream.Create; try http.Get ( 'https://www.google.com',body); tthread.Synchronize (nil, procedure begin memo1.text: = body.DataString; end); finally http.free; body.free; end; end).Start; end;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...