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

Лидеры

  1. qz5

    qz5

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


    • Баллы

      3

    • Постов

      151


  2. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 213


  3. sinuke

    sinuke

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


    • Баллы

      1

    • Постов

      190


  4. Barbanel

    Barbanel

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


    • Баллы

      1

    • Постов

      419


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

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

  1. Всем привет! После долгого творческого запоя я запилил альфу либы, которая позволяет юзать обычный, не-генномодифицированный ListView. Данные подаются в виде модели данных, описание раскладки итема лежит в JSON. Для работы пишется примитивный наследник класса-адаптера, который биндит данные модели на элементы из JSON. Я решил, что руками делать это дешевле чем через RTTI { TMyAdapter } procedure TMyAdapter.SetupDrawableContent(const ADrawable: TListItemDrawable; const AData: TMyData); begin if SameText( ADrawable.Name, 'text') then begin (ADrawable as TListItemText).Text := AData.Text; end else if SameText( ADrawable.Name, 'detail') then begin (ADrawable as TListItemText).Text := AData.Detail; end else if SameText( ADrawable.Name, 'balance') then begin (ADrawable as TListItemText).Text := FormatFloat('0.00', AData.Balance); end else if SameText( ADrawable.Name, 'reserved') then begin (ADrawable as TListItemText).Text := FormatFloat('0.00', AData.Reserved); end end; Главная хитрость и отличие от стандартного DynamicAppearance+LiveBinding - переменная высота итемов ListView и использование арифметики в описании раскладки. Можно указать Detail.Y = Text.Bottom + 5, ItemHeight = Detail.Bottom + 10, Detail.W = ItemWidth/2 - X {"Kind":"rect","Name":"BonusRect","Value":"", "Place":{"X":"itemwidth*3/4","Y":"Text.Y","W":"ItemWidth/4-5","H":"50"}, "BorderColor":"#FF005500", "Color":"lime", "LineWidth":3}, {"TextHAlign":2,"TextVAlign":1,"Kind":"text","Name":"Balance","Value":"", "Place":{"X":"BonusRect.x+5","Y":"Text.Y","W":"BonusRect.w-10","H":"50"}, "WordWrap":true, "Color" :"Black", "Font":{"Size":18,"Style":""}} ], "ItemHeight":"detail.bottom+10", Это дает довольно гибкую систему. Не на все случаи жизни, но все, что нужно, можно после автоматической раскладки дополнительно приписать в OnUpdateObjects Код для работы примерно такой procedure TForm1.FormCreate(Sender: TObject); begin data:= TMyDataList.CreateFromFile(ExePath()+'data.json'); // загрузка в модель данных Adapter := TMyAdapter.Create(lvWallets, data.Items, ExePath()+'pattern.json'); // создание адаптера и загрузка шаблона Adapter.Pattern.SetupListView(lvWallets); // задать отступы и разную мелочь Adapter.ResetView(); // здесь в цикле из модели данных создается нужное количество итемов ListView end; procedure TForm1.lvWalletsUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); begin Adapter.SetupContent(AItem); // загрузить текст, картинки и другое содержимое в элементы итема Adapter.Pattern.DoLayout(AItem); // поправить раскладку в соответствии с содержимым элементов итема end; Для использования кроме стандартных - текст, картинка, кнопка - создано несколько дополнительных элементов итема - прямоугольник, круг, уголок, линия. Отличие от ModernLV - , 1) все происходит без правки системных файлов 2) пока нет колонок и других особых изысков. На результат работы смотреть тут. Исходники пока не причесаны, будут чуть позже UPD. ссылки на репозитории ниже
    1 балл
  2. sinuke

    переход к x64?

    Да вообще не лучше - дома все устройства с 9-м андройдом. Так что лично я вообще не знаю что делать
    1 балл
  3. qz5

    переход к x64?

    не советовал бы такое делать за это Гугл может не только приложение забанить, но и полностью Вас как разработчика так что даже если новый аккаунт создадите - на него тоже бан прилетит Гугла не любит когда их так обманывают, в подобных случаях порой создают робота, который обходит и всем таким приложениям бан дает так что это рискованно, лучше пока через MaxSDK
    1 балл
  4. Barbanel

    переход к x64?

    Т.е. в коммьюнити эдишн его не будет. Редиски!!! ?
    1 балл
  5. qz5

    переход к x64?

    Нашли способ, чтобы Плеймаркет не ругался на отсутствие 64-битности, вот оно: http://www.fmxexpress.com/learn-how-to-deploy-delphi-10-3-rio-android-apps-to-google-play-with-android-64-bit-requirements/ Но правда есть проблема: после этого не даст установить такое приложение на Андроид 9 и 10.
    1 балл
  6. qz5

    переход к x64?

    Вышла версия 10.3.2 - https://community.idera.com/developer-tools/b/blog/posts/announcing-the-release-of-delphi-c-builder-and-rad-studio-10-3-2 Добавили поддержку macOS 64 бит, нотификации и поддержка Линукса новые теперь тоже из коробки поддерживаются но вот Андроид 64 - всё еще нет
    1 балл
  7. Вот и картинки подвезли. Идиотский Deployment отказывается переписывать старые файлы на новые.... Пока полностью не удалил приложение, файл-описание раскладки был старый, без картинок Как видно из заголовка 3000+ итемов с авторасчетом высоты. 6 секунд Крутится плавно... ListViewTest.apk.rar
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...