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

[Обзор] #3 ModernListView - динамическая подгрузка контента

В теме 10 сообщений

Ссылка: http://blog.rzaripov.kz/2016/12/3-modernlistview.html

Автор: Зарипов Равиль @ZuBy

Описание:  Реализация динамической подгрузки контента:

  • Бесконечный скроллинг (например как лента в ВК)
  • Паджинация/Пагинация (постраничная загрузка)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Настоящий программист!

Даже на выходных обновляет свой продукт :rolleyes:

P.S. Спасибо за ответы в личке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет! хотел скомпилить, выводит ошибку [dcc32 Fatal Error] FMX.ListView.pas(21): F2051 Unit FMX.ListView.Adapters.Base was compiled with a different version of FMX.ListView.Types.TListItem

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Ерлан сказал:

Привет! хотел скомпилить, выводит ошибку [dcc32 Fatal Error] FMX.ListView.pas(21): F2051 Unit FMX.ListView.Adapters.Base was compiled with a different version of FMX.ListView.Types.TListItem

Какая версия студии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Ерлан сказал:

Delphi 10.2 Токио

Эта статья была для Берлина

там есть папка tokyo файлы из нее перенести в проект

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Равиль Зарипов (ZuBy) сказал:

Эта статья была для Берлина

там есть папка tokyo файлы из нее перенести в проект

Рахмад, Равиль! Сбилдил, все заработало! Привет с Караганды)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день! Использую ModernListView в проекте. Не удается привязать к нему данные с помощью LiveBindings. Выдает ошибку

 F2051 Unit Fmx.Bind.Editors was compiled with a different version of FMX.ListView.TCustomListView

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.05.2017 в 14:27, Ерлан сказал:

Добрый день! Использую ModernListView в проекте. Не удается привязать к нему данные с помощью LiveBindings. Выдает ошибку

 F2051 Unit Fmx.Bind.Editors was compiled with a different version of FMX.ListView.TCustomListView

 

dcu файлы LiveBindings нужно пересобирать с новым TListView, но не пробовал сам, т.к не пользуюсь LB

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в принципе это обычная практика когда меняешь стандартные компоненты, складывать модули которые не могут собраться рядом с измененным исходником. то есть ругается на Fmx.Bind.Editors берешь его и кидаешь рядом с FMX.ListView.pas, и так далее. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От x11
      ListView в режиме appearance.
      Добавил пару TListItemGlyphButton, указал в свойстве ButtonType - CheckBox. Но при работе приложения - пустота.
      Другие типы кнопок тоже не отображает.
      ЧЯДНТ.
    • От x11
      По совету krapotkin`a
      http://fire-monkey.ru/topic/4595-listview-скрывает-повторяющийся-текст-заголовков/?do=findComment&comment=29209
       
      Забросил LiveBinding при заполнении TListView и начал заполнять ручками.
      Почти всё хорошо за исключением загрузки картинки из базы.
      При использовании LiveBinding картинка грузилась, а теперь просто пустота.
      На Windows картинки грузятся и отображаются, а на Андроиде не хотят.
       
      Вот часть кода загрузки
      Var stream: TBlobStream; ... begin .... lv.BeginUpdate; try lv.Items.Clear; qObjects2.close; qObjects2.Open; while not qObjects2.Eof do begin item := lv.Items.Add; item.Data[sItemId] := qObjects2id.AsString; item.Data[sItemPrice] := qObjects2price.AsString; item.Data[sItemType] := qObjects2type_name.Value; ... ... ... ListItemImage := Item.Objects.FindObjectT<TListItemImage>(sItemImg); stream := TBlobStream.Create(qObjects2img, bmRead); try if stream.Size <= 0 then ListItemImage.ImageIndex := 0 else ListItemImage.Bitmap := TBitmap.CreateFromStream(stream); finally stream.Free; end;  
      К ListView прикреплен список картинок, где есть картинка-пустышка, которая грузится, если у записи нет картинки.
      вот этой строкой ListItemImage.ImageIndex := 0
      картинки-пустышки нормально отображаются и на Андроид-устройстве в том числе.
      Ошибок нет, а просто пустой TListItemImage там, где должна быть картинка.
      Может, я какое-то свойство забыл включить у TListItemImage?
      При отладке видно, что картинка загружается из базы.
       
       
    • От x11
      Сделал такой эксперимент в событии OnUpdateObjects
      if AItem.Purpose in [TListItemPurpose.Header] then Memo1.Lines.Add(AItem.Text);  
      И в memo загрузилось в два раза больше строк, чем элементов списка.
      Это нормально, так и должно быть?
    • От x11
      Через LiveBinding загружаются данные в ListView, в том числе и в ListItemImage.
      Но у некоторых Item`ов нет картинки. И в этом случае нужно показать "пустышку" типа No image.
      Делаю в событии UpdateObjects
      procedure TfmMain.lvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var ListItemImage: TListItemImage; begin if Assigned(AItem) then begin ListItemImage := AItem.Objects.FindObjectT<TListItemImage>('img'); if Assigned(ListItemImage) then if not assigned(ListItemImage.Bitmap) then ListItemImage.ImageIndex := 0; end; end;  
      Но теперь у всех ListItemImage отображается пустышка, даже там, где должна быть правильная картинка.
      Пробовал использовать событие UpdatingObjects, но в этом случае грузится правильная картинка, а пустышка не грузится.
    • От x11
      В TListView есть картинка и другие поля. В поля уже выводятся данные из таблицы с помощью LiveBinding.
      Добавил новое поле в DataSet типа TBlobField, но LiveBinding Designer это поле не отображает, не видит его, поэтому и к картинке не могу привязать.
      Так и должно быть или это баг?
    • От x11
      1. Почему кнопка располагается во время работы программы не так, как я её расположил в дизайне?
      2. Как привязать кнопку к правому краю? Если установить "Trailing" в свойстве Align, то кнопка вообще исчезает.
       
       


    • От x11
      Данные в ListView грузятся из таблицы через BindSourceDB1.
      Добавил кнопку TImageObjectAppearance, но у кнопки нет свойства, отвечающего за картинку. Как добавить картинку в моём случае?
    • От delphiec
      Беда, совсем беда .... Имеется на форме TListView (listviewEdit.jpg), в него динамически загружается список с картинками полученными через idhttp + TmemoryStream.
       
      ..... private nowDrawed:string; ... Item: TListViewItem; ImageObject: TListItemImage; TextObject: TListItemText; groups:array of Tgroups; ... ..... procedure Tmain.drawGroups(); var i:integer; begin try loader.Show; loader.ProgressBar.Max:=high(groups); loader.ProgressBar.Value:=0; Application.ProcessMessages; nowDrawed:='groups'; ListView.Items.Clear; ListView.BeginUpdate; for i := 0 to high(groups) do begin Item := ListView.Items.Add; TextObject:=Item.Objects.FindObjectT<TListitemtext>('Text'); TextObject.Text:=groups[i].caption; Item.Tag:=strtoint(groups[i].id); ImageObject:=Item.Objects.FindObjectT<TListItemImage>('Image'); if ImageObject.Bitmap=nil then ImageObject.bitmap:=TBitmap.Create; http.loadImage(url+groups[i].image,ImageObject.bitmap); loader.ProgressBar.Value:=i; Application.ProcessMessages; end; ListView.EndUpdate; loader.hide; except loader.hide; end; end; procedure Thttp.loadImage(link:string;bitmap:Tbitmap); var MS: TMemoryStream; begin try MS := TMemoryStream.Create; IdHTTP.Get(link,MS); MS.Position:=0; if not (bitmap=nil) then bitmap.LoadFromStream(MS); MS.Free; except end; end; Так вот, если собирать под Win64 (onWin.jpg), то всё отлично, но если под андроид (onAndr.jpg), то картинки отсутствуют. 
      При этом, если на форму бросить TImage и передавать в функцию loadImage bitmap этого Timage, то всё отображается корректно.
      P.S. Тестовое изображение в аттаче.




    • От ENERGY
      Нужно сделать компонент TGrid. Стандартный Grid не подходит, потому что нужно чтобы строки (raws) были разной высоты, а также чтобы была возможность соединять (сливать) ячейки.
      Я решил сделать его на основе TListView и его DynamicAppearance. Использовать кастомные объекты, отнаследованные от TListItemObject + возможность рисовать на Canvas каждого ListItem, например прямоугольники.
      Т.к. колонки он не поддерживает, есть идея использовать THeader и подстраивать их под размер своих колонок. Также важно быстродействие компонента.
      Как вы думаете есть ли в этом смысл?
      Возможно кто-то уже занимался подобным, и может что-нибудь посоветовать.
      Спасибо.
       
    • От ENERGY
      Привет.
      Я к своему стыду так и не научился толком работать с TListView. 
      TListBox это сделать просто, а вот как это сделать в TListView... Это сложный компонент.
      Подскажите как правильно реализовать.
      Нужно добавить с правой стороны каждого Item иконку избранное, которая работала бы как чекбокс - если нажать по ней то звездочка становится желтой и без заливки (Checked/unchecked) .
      Насколько я понял в GlyphButton нельзя добавить картинку.. Как же тогда это сделать?
      Спасибо.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу