FGX.CollectionView.TfgCustomCollectionView: различия между версиями

Материал из FGX Native Докуметации
Перейти к навигации Перейти к поиску
(summary)
(Метка: замена)
Строка 10: Строка 10:
 
Прямые наследники:
 
Прямые наследники:
 
[[FGX.CollectionView.TfgCollectionView|TfgCollectionView]]
 
[[FGX.CollectionView.TfgCollectionView|TfgCollectionView]]
 
== Описание ==
 
 
{{#spoiler:hide=hide_message|
 
 
 
{| class="wikitable"
 
|-
 
! Текст заголовка !! Текст заголовка !! Текст заголовка
 
|-
 
| Текст ячейки || Текст ячейки || Текст ячейки
 
|-
 
| Текст ячейки || Текст ячейки || Текст ячейки
 
|-
 
| Текст ячейки || Текст ячейки || Текст ячейки
 
|}
 
 
}}
 
 
<span style="color:gray">Описание отсутствует.</span>
 
 
== Конструкторы ==
 
 
{| class="wikitable sortable"
 
|-
 
| <syntaxhighlight lang="Delphi">constructor</syntaxhighlight> || <code>Create(AOwner: [[TComponent]])</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|}
 
 
== Методы ==
 
 
{| class="wikitable sortable"
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ReloadItems()</code>
 
 
<p>Перезагружает элементы коллекции. Форсирует перезагрузку всех элементов списка.</p><div class="info">Потокобезопасный метод. Можно вызывать не из главного потока. Этот метод автоматически завершает процесс <i>PullToRefresh</i> , если он был запущен.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ReloadItem(const AItemIndex: [[Integer]])</code>
 
 
<p>Перезагружает элемент коллекции по указанному индексу.</p><div class="info">Потокобезопасный метод. Можно вызывать не из главного потока.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetItemId(const AItemIndex: [[Integer]]): [[Int64]]</code>
 
<p>Возвращает идентификатор элемента по его порядковому индексу. Для этого использует данные, полученные в результате работы обработчика события <i>OnGetItemId</i> . По умолчанию использует порядковый иднекс элемента.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindItemIndexById(const AItemId: [[Int64]]; out AItemIndex: [[Integer]]): [[Boolean]]</code>
 
 
<p>Поиск порядкового индекса элемента по его уникальному идентификатору. Задание уникальных идентификаторо элементов осуществляется через событие <i>OnGetItemId</i> .</p><div class="info">Сложность поиска O(n). Если индекс не найден, то <i>AItemIndex</i> будет содержать -1.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindItemIndexByPoint(const APoint: [[TPointF]]; out AItemIndex: [[Integer]]): [[Boolean]]</code>
 
 
<p>Поиск порядкового индекса элемента по координатам точки в CollectionView, попадающая в один из видимых элементов. Работает только для видимых элементов с индексами в диапазоне <i>GetFirstVisibleItemIndex</i> и <i>GetLastVisibleItemIndex</i> . <i>APoint</i> указывается в системе координат контрола с учетом смещения прокрутки.</p><div class="info">Если индекс не найден, то <i>AItemIndex</i> будет содержать -1.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindItemIndexByObject(const AObject: [[TObject]]; out AItemIndex: [[Integer]]): [[Boolean]]</code>
 
 
<p>Поиск порядкового индекса элемента по объекту, который принадлежит стилю элемента (по цепочке родителей можно выйти к стилю элемента).</p><div class="info">Если индекс не найден, то <i>AItemIndex</i> будет содержать -1.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindItemWrapperByIndex(const AItemIndex: [[Integer]]; out AItemWrapper: [[FGX.CollectionView.TfgItemWrapper|TfgItemWrapper]]): [[Boolean]]</code>
 
 
<p>Ищет <i>TfgItemWrapper</i> для работы с контролом элемента по индексу. Если элемента по указанному индексу нет, то в <i>AItemWrapper</i> будет nil.</p><div class="info">Работает только для индексов в диапазоне <i>GetFirstVisibleItemIndex</i> и <i>GetLastVisibleItemIndex</i> . Сложность O(1).</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindItemControlByIndex(const AItemIndex: [[Integer]]; out AControl: [[FGX.Control.TfgControl|TfgControl]]): [[Boolean]]</code>
 
 
<p>Ищет контрол <i>TfgControl</i> элемента по индексу. Если элемента по указанному индексу нет, то в <i>AControl</i> будет nil.</p><div class="info">Работает только для индексов в диапазоне <i>GetFirstVisibleItemIndex</i> и <i>GetLastVisibleItemIndex</i> . Сложность O(1).</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetFirstVisibleItemIndex(): [[Integer]]</code>
 
 
<p>Возвращает индекс первого видимого элемента на экране.</p><div class="info">Если список пуст, то вернет -1.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetLastVisibleItemIndex(): [[Integer]]</code>
 
 
<p>Возвращает индекс последнего видимого элемента на экране.</p><div class="info">Если список пуст, то вернет -1.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">CreateStyle(): [[FGX.CollectionView.TfgCollectionViewStyle|TfgCollectionViewStyle]]</code>
 
<p>Создает новый пустой стиль с уникальным именем <i>TfgCollectionViewStyle.TfgStyleName</i> .</p>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">AddStyle(const AStyle: [[FGX.CollectionView.TfgCollectionViewStyle|TfgCollectionViewStyle]])</code>
 
<p>Добавляет стиль в список стилей контрола.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetStyle(const AStyleName: [[string]]): [[FGX.CollectionView.TfgCollectionViewStyle|TfgCollectionViewStyle]]</code>
 
 
<p>Возвращает стиль по его имени.</p><div class="info">Если стиль не найден, то вернет nil.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetStyleIndex(const AStyleName: [[string]]): [[Integer]]</code>
 
 
<p>Возвращает индекс стиля по его имени. Первый стиль имеет индекс 0.</p><div class="info">Если стиль не найден, то вернет -1.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetStyleForItemIndex(const AItemIndex: [[Integer]]): [[FGX.CollectionView.TfgCollectionViewStyle|TfgCollectionViewStyle]]</code>
 
 
<p>Возвращает стиль элемента по указанному индексу элемента.</p><div class="info">Если стиль не найден, или стилей нет, то вернет nil.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ScrollToItem(const AItemIndex: [[Integer]]; const AWithAnimation: [[Boolean]])</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ResetSelection()</code>
 
<p>Сбрасывает текущее выделение всех выделенных элементов.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ResetSelection(const AItemIndex: [[Integer]])</code>
 
<p>Сбрасывает текущее выделение элемента с указанным индексом.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">SelectItem(const AItemIndex: [[Integer]])</code>
 
 
<p>Выделяет элемент с указанным индексом.</p><div class="info">Работает только, если стиль элемента поддерживает выделение <i>TfgCollectionViewStyle.Selectable</i> и стоит режим выделения отличный от none <i>SelectionMode != TfgCollectionViewSelectionMode.None</i> .</div>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">SelectAllItems()</code>
 
 
<p>Выделяет все элементы списка.</p><div class="info">Работает только, если стиль элемента поддерживает выделение <i>TfgCollectionViewStyle.Selectable</i> и стоит режим выделения MultiSelect <i>SelectionMode = TfgCollectionViewSelectionMode.MultiSelect</i> .</div>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">BeginPullToRefresh()</code>
 
 
<p>Запускает программным способом процесс обновления данных с одновременным отображением индикатора загрузки. Разработчик должен выполнить/запустить процесс обновления данных и по окончании загрузки данных сообщить об этом контролу, вызвав <i>EndPullToRefresh</i> . Обратите внимание, что для визуального обновления данных, разработчику так же нужно воспользовать одним из методов обновления данных <i>ReloadItems</i> или <i>ReloadItem</i> .</p><div class="info">Если список уже находится в состоянии обновления <i>IsPullToRefreshActive = True</i> , то метод не будет запускать новый процесс обновления.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">EndPullToRefresh()</code>
 
 
<p>Заканчивает процесс обновления данных, начатый пользователем. Это приводит к скрытию индикатора загрузки и загрузки данных в список. Обратите внимание, что для визуального обновления данных, разработчику так же нужно воспользовать одним из методов обновления данных <i>ReloadItems</i> или <i>ReloadItem</i> .</p><div class="info">Потокобезопасный метод. Можно вызывать не из главного потока.</div>
 
|}
 
 
== Свойства ==
 
 
{| class="wikitable sortable"
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Count: [[Integer]]</code>
 
<p>Возвращает общее количество элементов списка. Использует обработчик <i>OnGetItemCount</i> .</p>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>StylesContainer: [[FGX.CollectionView.TfgCollectionViewStyles|TfgCollectionViewStyles]]</code>
 
<p>Контейнер стилей, содержит все стили коллекции.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ContentOffset: [[TPointF]]</code>
 
<p>Возвращает смещение контента.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Selection: [[TfgCollectionViewItemsArray|TfgCollectionViewItemsArray]]</code>
 
 
<p>Массив индексов выделенных элементов.</p><div class="info">В случае, если был вызван <i>ReloadItems</i> при наличии выделение, работа данного метода первый раз может занимать O(n). При этом дальнешее изменение выделения не уже никак не влияет на сложность и по прежнему, будет занимать O(k), где k - это количество выделенных элементов.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>IsPullToRefreshActive: [[Boolean]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ScrollGlowColorLink: [[FGX.Assets.Color.TfgAssetColorLink|TfgAssetColorLink]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>SelectionColorLink: [[FGX.Assets.Color.TfgAssetColorLink|TfgAssetColorLink]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>PullToRefreshOptions: [[FGX.CollectionView.TfgPullToRefreshOptions|TfgPullToRefreshOptions]]</code>
 
<p>Настройки режима обновления списка "Потяни и обнови".</p>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ScrollGlowColor: [[TAlphaColor]]</code>
 
 
<p>Цвет эффекта прокручивания списка, который появляется при попытке прокрутить список за его границы.</p><div class="info">Актуально только для Андроид платформы.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ScrollGlowColorName: [[TfgAssetName|TfgAssetName]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>SelectionColor: [[TAlphaColor]]</code>
 
 
<p>Общий цвет выделение элементов по умолчанию. Каждый стиль элемента может переопределить это значение через аналогичное свойство <i>TfgCollectionViewStyle.SelectionColor</i> .</p><div class="info">Если указан цвет <i>TAlphaColorRec.Null</i> , то компонент будет использовать системный цвет для выделения, который зависит от платформы и версии ОС.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>SelectionColorName: [[TfgAssetName|TfgAssetName]]</code>
 
<p>Название ресурса цвета выделения элементов в контроле.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>SelectionMode: [[TfgCollectionViewSelectionMode|TfgCollectionViewSelectionMode]]</code>
 
<p>Режим выделения элементов. Всего существует три способа выделения:</p> <ul><li><b>None</b> - Элементы не поддерживают выделение.</li> <li><b>SingleSelect</b> - Только один элемент может быть выделени. При этом при попытке выделить другой элемент выделение с предыдущего сбрасывается.</li> <li><b>MultiSelect</b> - Поддерживается выделение любого количества элементов.</li></ul>
 
|}
 
 
== События ==
 
 
{| class="wikitable sortable"
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnGetItemCount: [[Integer]]</code>
 
 
<p>Через это событие компонент запрашивает общее количество элементов, которые необходимо отобразить.</p><div class="info">Компонент постоянно использует это событие для получения количества элементов. Поэтому избегайте практики долгого вычисления количества. Это может сказать на скорости прокрутки списка.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnGetItemId: [[TfgOnGetItemId]]</code>
 
 
<p>Через это событие компонент запрашивает уникальный идентификатор элемента. Эта информация может использоваться контролом для визуального выделения изменения элементов на экране при обновлении списка. По мимо этот идентификтор используется для корректного выделения элементов в случае, когда пользователь меняет данные элементов, добавляет или удаляет их.</p><div class="info">Обязательно должен быть уникальным среди идентификаторов всех элементов!</div>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnGetItemStyle: [[string]]</code>
 
 
<p>Через это событие компонент запрашивает название стиля, которое необходимо применить к элементу по указанному индексу.</p><div class="info">Компонент использует это событие в момент, когда указанный элемент готовится появится на экране. Обратите внимание, что если у вас в коллекции используется только один стиль, то это событие можно не использовать. Компонент автоматически выберет первый стиль, если вы не используете это событие.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnBindItem: [[TfgOnBindItem]]</code>
 
 
<p>Через это событие происходит связь пользовательских данных с конкретным элементом списка по указанному индексу.</p><div class="info">Все необходимые данные для отображения должны быть уже предварительно загружены и приготовлены к отображению. В этом событие необходимо связать готовые данные с конкретными контролами.</div>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnTapItem: [[TfgOnItemTap]]</code>
 
<p>Пользователь нажал на элемент списка.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnSelectionChanged: [[TfgOnSelectionChangedEvent]]</code>
 
<p>Пользователь совершил выделение одного или нескольких элементов списка. За возможность выделения элемента отвечает свойство стиля <i>TfgCollectionViewStyle.Selectable</i> .</p>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnItemSelectionChanged: [[TfgOnItemSelectionChanged]]</code>
 
<p>Изменилось выделение у элемента с индексом <i>AItemIndex</i> .</p>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnScroll: [[TfgOnScrollEvent]]</code>
 
<p>Срабатывает, когда содержимое списка прокручивается.</p>
 
|-
 
| <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnPullToRefresh: [[TNotifyEvent]]</code>
 
<p>Срабатывает, когда пользователь запускает процесс обновления списка. Чтобы это событие работало, нужно обязательно включить поддержку режима обновления данных <i>EnabledPullToRefresh = True</i> .</p>
 
|}
 
 
== Константы ==
 
 
{| class="wikitable sortable"
 
|-
 
| <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultScrollGlowColor: [[TAlphaColor]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultSelectionMode: [[TfgCollectionViewSelectionMode|TfgCollectionViewSelectionMode]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|-
 
| <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultSelectionColor: [[TAlphaColor]]</code>
 
<span style="color:gray">Описание отсутствует.</span>
 
|}
 

Версия 02:37, 13 июня 2019

Delphi

TfgCustomCollectionView = class (TfgControl, IFGXContainer)

TComponent -> TfgControl -> TfgCustomCollectionView

Прямые наследники: TfgCollectionView