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

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


ENERGY

Вопрос

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

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

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

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

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

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

Ссылка на комментарий

Рекомендуемые сообщения

  • 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
В 26/03/2017 в 07:42, Равиль Зарипов (ZuBy) сказал:

Existe um pequeno projeto com um modo horizontal no artigo, se você não conseguir implementá-lo, então eu vou ajudar

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

Привет, я начал вчера изучать ModernListView для использования в проекте, мне это действительно нравится. Но со мной происходит следующее, когда я использую LiveBinds на некоторых элементах управления, он возвращает мне сообщение
[
dcc32 Fatal Error] xx.pas (16): F2051 Блок Fmx.Bind.Editors был скомпилирован с другой версией FMX.ListView.TCustomListView

Это использование версии версии 10.2 в Берлине 2, должно решить такую вещь

Ссылка на комментарий
  • 0
5 часов назад, Alisson R Oliveira сказал:

Привет, я начал вчера изучать ModernListView для использования в проекте, мне это действительно нравится. Но со мной происходит следующее, когда я использую LiveBinds на некоторых элементах управления, он возвращает мне сообщение
[
dcc32 Fatal Error] xx.pas (16): F2051 Блок Fmx.Bind.Editors был скомпилирован с другой версией FMX.ListView.TCustomListView

Это использование версии версии 10.2 в Берлине 2, должно решить такую вещь

Не используйте LiveBinds , это лютая злобная недоработанная вещь! 

Ссылка на комментарий
  • 0
2 часа назад, wamaco сказал:

Não use LiveBinds, isso é uma coisa feroz, maligna e inacabada! 

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

Ссылка на комментарий
  • 0
20 часов назад, Alisson R Oliveira сказал:

dcc32 Fatal Error] xx.pas (16): F2051 Блок Fmx.Bind.Editors был скомпилирован с другой версией FMX.ListView.TCustomListView

Данная ошибка не означает что Live Bindings глючная.

Возможны два варианта.

1) Вы используете локализацию.
Такое сообщение означает, что локализованная версия одного из pas-файлов отличается от основной версии.
К сожалению, встречается ситуация, когда Embacadero модифицирует основную ветку кода, добавляет новые константы, а в локализованной ветке эти константы добавить забывает.
Вам нужно найти эти файлы и привести к единому виду.

2) Вы сами (либо люди, которые работали над проектом до вас) модифицировали эти файлы. Решение проблемы - аналогично пункту 1.

Удачи!

PS. настоятельно рекомендуется после исправления сделать очистку проекта от временных dcu файлов.
В дереве проектов выбрать главный .dpr -> клик правой кнопкой мышки -> Clear

Ссылка на комментарий
  • 0
4 часа назад, Barbanel сказал:

Данная ошибка не означает что Live Bindings глючная.

Возможны два варианта.

1) Вы используете локализацию.
Такое сообщение означает, что локализованная версия одного из pas-файлов отличается от основной версии.
К сожалению, встречается ситуация, когда Embacadero модифицирует основную ветку кода, добавляет новые константы, а в локализованной ветке эти константы добавить забывает.
Вам нужно найти эти файлы и привести к единому виду.

2) Вы сами (либо люди, которые работали над проектом до вас) модифицировали эти файлы. Решение проблемы - аналогично пункту 1.

Удачи!

PS. настоятельно рекомендуется после исправления сделать очистку проекта от временных dcu файлов.
В дереве проектов выбрать главный .dpr -> клик правой кнопкой мышки -> Clear

 

Существует только один файл «Fmx.Bind.Editors». Когда я добавляю FML.ListView.pas из ModernListView, который представляется мне, тогда файл ModernListView pas использует функции, которых он не имеет в версии Fmx.Bind.Editors в Берлине...

Ссылка на комментарий
  • 0
2 минуты назад, Alisson R Oliveira сказал:

Существует только один файл «Fmx.Bind.Editors»

FMX.ListView тоже только один?
Вы уверенны?
Проверьте, поищите оба файла по всем путям, доступным Delphi.

Возможно у вас установлено несколько версий Delphi. Проверьте пути в таком случае.

Ссылка на комментарий
  • 0
12 минут назад, Barbanel сказал:

O FMX.ListView também é apenas um?
Tem certeza?
Verifique, procure os dois arquivos em todos os caminhos disponíveis para o Delphi.

Talvez você tenha várias versões do Delphi instaladas. Verifique o caminho neste caso.

У меня есть только одна версия Delphi (Берлин). Единственное, что было добавлено, это библиотека ModernListView, не так ли, если вы это знаете? Больше и только 1 .pas файлы в дополнение к оригиналу. только это

Ссылка на комментарий
  • 0

 

24 минуты назад, Alisson R Oliveira сказал:

ModernListView pas использует функции, которых он не имеет в версии Fmx.Bind.Editors в Берлине

1) Попробуйте найти версию ModernListView для Berlin
2) Обратитесь к автору
3) Удалите несуществующие функции сами

Ссылка на комментарий
  • 0
38 минут назад, Barbanel сказал:

 

1) Попробуйте найти версию ModernListView для Berlin
2) Обратитесь к автору
3) Удалите несуществующие функции сами

Вот почему я разместил здесь. Автор и http://fire-monkey.ru/profile/59-равиль-зарипов-zuby/

Ссылка на комментарий
  • 0

попытайтесь добавить Fmx.Bind.Editors.pas в папку с вашим проектом, после этого он скорее всего запросит еще несколько файлов, и их добавьте, это должно помочь. 

Ссылка на комментарий
  • 0
  • Модераторы
В 28.10.2018 в 17:56, Alisson R Oliveira сказал:

Привет, я начал вчера изучать ModernListView для использования в проекте, мне это действительно нравится. Но со мной происходит следующее, когда я использую LiveBinds на некоторых элементах управления, он возвращает мне сообщение
[
dcc32 Fatal Error] xx.pas (16): F2051 Блок Fmx.Bind.Editors был скомпилирован с другой версией FMX.ListView.TCustomListView

Это использование версии версии 10.2 в Берлине 2, должно решить такую вещь

Нужно положить файлы которые просит компилятор в папку где лежит ModernLV.

 

ModernLV не тестировался с LiveBindings и често не уверен что вообще будет работать

Ссылка на комментарий
  • 0
В 30/10/2018 в 04:20, Равиль Зарипов (ZuBy) сказал:

Нужно положить файлы которые просит компилятор в папку где лежит ModernLV.

 

ModernLV не тестировался с LiveBindings и често не уверен что вообще будет работать

Большое спасибо, что, копируя файл, delphi перестала жаловаться. Поздравляем за работу.

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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