• 0
ENERGY

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

Вопросы

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

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

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

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

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

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

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


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

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

  • 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 перестала жаловаться. Поздравляем за работу.

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


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

Мне вот интересно, в 10.3 будет горизонтальный TListView из коробки?

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


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

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

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

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

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

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

Войти

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

Войти

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

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