Translate

пятница, 25 ноября 2016 г.

#0 ModernListView - знакомство

Доброго времени суток!

Так вышло, что в мобильных приложениях мы часто используем списки для отображения информации и самый гибкий и удобный компонент это TListView. Но часто стандартного функционала нам не достаточно, поэтому я решил его немного доработать.

В этом посте я вкратце расскажу о ModernLV

ModernLV - это надстройка над стандартным TListView. Модуль не нужно устанавливать, достаточно положить в папку с проектом и вам будут доступны все эти улучшения.

ВАЖНО: Все методы и свойства доступны кодом

Начну с самых значимых изменении:
  • Отрисовка Item'ов как вертикально так и горизонтально
ListView1.Horizontal := true/false;
  • В режиме колонок можно отобразить несколько Item'ов в один ряд
ListView1.ColumnWidth := 160;
ListView1.AutoColumns := true;
  • Появилась покраска всех элементов (header, footer, separator, item, background, etc...), теперь не нужно владеть навыками создания стилей, можно все указать цветом.
ListView1.SetColorItemSelected(TAlphaColorRec.Orangered);
ListView1.SetColorItemFill(TAlphaColorRec.Whitesmoke);
ListView1.SetColorItemFillAlt(TAlphaColorRec.Lightgrey);
ListView1.SetColorBackground(TAlphaColorRec.Whitesmoke);
ListView1.SetColorItemSeparator(TAlphaColorRec.Red);
ListView1.SetColorText(TAlphaColorRec.Darkmagenta);
ListView1.SetColorTextSelected(TAlphaColorRec.Blueviolet);
ListView1.SetColorTextDetail(TAlphaColorRec.Darksalmon);
ListView1.SetColorHeader(TAlphaColorRec.Crimson);
ListView1.SetColorTextHeader(TAlphaColorRec.Whitesmoke);
ListView1.SetColorTextHeaderShadow(TAlphaColorRec.grey);
ListView1.SetColorPullRefresh(TAlphaColorRec.Lime);
ListView1.SetColorPullRefreshIndicator(TAlphaColorRec.Limegreen);
ListView1.SetColorStretchGlow(TAlphaColorRec.Limegreen);
if ListView1.IsCustomColorUsed(ListView1.ItemIndex) then
   ListView1.SetDefaultColorForItem(ListView1.ItemIndex)
else
   ListView1.SetCustomColorForItem(ListView1.ItemIndex, 
     TAlphaColorF.Create(random(255) / 255, random(255) / 255,
     random(255) / 255, random(255) / 255).ToAlphaColor);
  • Новые события (Events)
При клике на Item в режиме колонок, сработает OnColumnClick
procedure OnColumnClick(const Column: Integer; const X, Y: Single;
  const AItem: TListViewItem; const DrawebleName: string);
Для уведомления о достижении конца списка появилось событие OnScrollEnd
procedure OnScrollEnd(Sender: TObject);
  • Показать всё, что скрыто... от разработчика
Скрыть/показать полосу прокрутки
ListView1.ShowScrollBar := true/false;
Добавляет отступ от первого элемента
ListView1.OffsetTop := 20;
Добавляет отступ от последнего элемента
ListView1.OffsetBottom := 20;
Узнаем первый видимый Item
ListView1.getFirstVisibleItemIndex
Узнаем последний видимый Item
ListView1.getLastVisibleItemindex
Количество видимых Item'ов
ListView1.getVisibleCount
Добавляет отступ слева для разделительной линии
ListView1.SeparatorLeftOffset := 5;
Добавляет отступ справа для разделительной линии
ListView1.SeparatorRightOffset := 5;
Включаем/отключаем эффект нажатия (на мобильных платформах)
ListView1.EnableTouchAnimation(true/false);
Доступ к TAniCalculations, например для включение/отключения BoundsAnimation 
if ListView1.getAniCalc <> nil then
 ListView1.getAniCalc.BoundsAnimation := false;

На этом наше знакомство заканчиваю, в следующих постах постараюсь подробней описать режим колонок, горизонтальный режим, динамическую загрузку картинок и прочие возможности TListView

Для подробного ознакомления можно посмотреть скриншоты и демо на GitHub'e