• 0
ENERGY

Горизонтальный TListView с картинками

Вопросы

Подскажите пожалуйста как реализовать такую вещь. Горизонтальный TListView где каждый Item это картинка, рястянутая целиком на Item.

Я попробовал использовать компонент Равиля, за что ему больше спасибо!

Никак не пойму (относительно недавно пришел с VCL) как нарисовать картинку целиком на Item на этом горизонтальном Item.

Это через стили надо делать? У ListView же какие то специальные стили, они отличаются например от стилей ListBox. Жаль там нет ItemOwnerDraw как в VCL. Пытался разобрать код в AutoColumns в проекте Равиля, но не разобрался, там рисуется колонками и список совсем другого типа..

Также еще один ньюанс не знаю даже как подойди к нему, между Items нужно сделать полоску конкретного цвета. Это в стилях по идее, левый и правый края Item закрасить надо?

Спасибо, очень надеюсь. Нигде нет нормальной инфы по горизонтальным спискам..

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


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

7 ответов на этот вопрос

  • 1

Есть небольшой проект с горизонтальным режимом в статье, если не получится реализовать, то помогу

http://blog.rzaripov.kz/2016/11/1-modernlistview.html

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


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

Огромное вам спасибо. Разобрался за несколько минут.

Вопрос: 

1. Что делать, если нужно загружать туда фотографии с диска, они большого размера, грузить их в TimageList займет много ресурсов - туда разве что можно загрузить превью фотографии, да и превью хотелось бы загружать по потребности.

Насколько я понимаю в FMX TLIstView нету режима виртуального списка, когда нужно отрисовывать только видимые Items как было в VCL? Я поискал, вроде стандартного механизма нет.

Есть идея отнаследоваться от TImageList и сделать чтобы он подгружал нужные фотки, по мере запроса... Будет этакий кэширующий виртуальный TImageList .

2. Вы не задумывались  создать в QC предложение с улучшенным TListView? Возможно добавят? Ведь вас уже рекламируют http://www.fmxexpress.com/very-customizable-listview-control-for-firemonkey-in-delphi-10-berlin-on-android-and-ios/

2. Кстати много вылезает предупреждений и подсказок от компилятора, тут два варианта или забить их директивами в самом модуле ListView 

{$WARN OFF}

Или откомпилировать в dcu.

[dcc32 Warning] FMX.ListView.pas(866): W1045 Property declaration references ancestor private 'TListViewBase.FSeparatorLeftOffset'
[dcc32 Warning] FMX.ListView.pas(868): W1045 Property declaration references ancestor private 'TListViewBase.FSeparatorRightOffset'
[dcc32 Warning] FMX.ListView.pas(871): W1045 Property declaration references ancestor private 'TListViewBase.FHorizontal'
[dcc32 Warning] FMX.ListView.pas(872): W1045 Property declaration references ancestor private 'TListViewBase.FMakeSelectedItemVisible'
[dcc32 Warning] FMX.ListView.pas(872): W1045 Property declaration references ancestor private 'TListViewBase.FMakeSelectedItemVisible'
[dcc32 Warning] FMX.ListView.pas(874): W1045 Property declaration references ancestor private 'TListViewBase.FTopOffset'
[dcc32 Warning] FMX.ListView.pas(875): W1045 Property declaration references ancestor private 'TListViewBase.FBottomOffset'
[dcc32 Warning] FMX.ListView.pas(876): W1045 Property declaration references ancestor private 'TListViewBase.FAutoColumns'
[dcc32 Warning] FMX.ListView.pas(877): W1045 Property declaration references ancestor private 'TListViewBase.FColumns'
[dcc32 Warning] FMX.ListView.pas(878): W1045 Property declaration references ancestor private 'TListViewBase.FMarg'
[dcc32 Warning] FMX.ListView.pas(879): W1045 Property declaration references ancestor private 'TListViewBase.FColumnWidth'
[dcc32 Warning] FMX.ListView.pas(882): W1045 Property declaration references ancestor private 'TListViewBase.FShowScrollBar'

 

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


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

1) Динамическая подгрузка описана тут http://blog.rzaripov.kz/2016/12/3-modernlistview.html

2) так критические баги не фиксят, куда им до рюшечек

3) вроде поправил в последней версии (на гите)

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


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

Большое спасибо за помощь, добрый человек!

Еще добавлю, чтобы сменить фон Item'a (например на прозрачный)  или добавить какие то рюшечки (например полоски между пунктами), на вышеуказанном примере: нужно зайти в стили, и редактировать imagesui.png файл который находится внутри контейнера listviewstyle_panel (не снаружи, т.к. там есть точно такой же). Т.е. жмем на imagesui.png > MultiresBitmap > выбираем нужный, и слева в инспекторе объектов жмем свойство Bitmap с помощью которого этот файл можно сохранить,(а потом и загрузить) на диск.

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


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

если убрать этот стиль, то можно всю настройку делать цветом (как показано в демке)

там же и задавать цвет для разделителей

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 26.03.2017 в 13:42, Равиль Зарипов (ZuBy) сказал:

Есть небольшой проект с горизонтальным режимом в статье, если не получится реализовать, то помогу

http://blog.rzaripov.kz/2016/11/1-modernlistview.html

Попробовал запустить демку Berlin 10.2, но получил ошибку :

[dcc32 Fatal Error] FMX.ListView.pas(21): F2051 Unit FMX.ListView.Adapters.Base was compiled with a different version of FMX.ListView.Types.TListItem

нужно еще какие-то манипуляции провести или я что-то не понял?

 

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


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

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

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

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

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

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

Войти

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

Войти

  • Последние посетители   0 пользователей онлайн

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