FGX.CollectionView.TfgCustomCollectionView: различия между версиями
Admin (обсуждение | вклад) (summary) (Метка: замена) |
Admin (обсуждение | вклад) (summary) |
||
(не показано 85 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | * [[ FGX. | + | * [[ FGX.Controls.TfgControl | Вверх к родителю: TfgControl ]] |
+ | * [[ FGX.CollectionView | К модулю: FGX.CollectionView ]] | ||
Delphi | Delphi | ||
− | <syntaxhighlight lang="Delphi">TfgCustomCollectionView = class (TfgControl, | + | <syntaxhighlight lang="Delphi">TfgCustomCollectionView = class (TfgControl, IFGXContainer)</syntaxhighlight> |
+ | |||
+ | <p class="class-inheritance"><span class="type-border">[[System.Classes.TComponent|TComponent]]</span> -> <span class="type-border">[[FGX.Controls.TfgControl|TfgControl]]</span> -> <span class="type-border">[[FGX.CollectionView.TfgCustomCollectionView|TfgCustomCollectionView]]</span></p> | ||
+ | |||
+ | Прямые наследники: | ||
+ | [[FGX.CollectionView.TfgCollectionView|TfgCollectionView]] | ||
+ | |||
+ | == Описание == | ||
+ | |||
+ | <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">procedure</syntaxhighlight> || <code lang="Delphi">NotifyItemsInserted(const AIndicies: [[TArray<System.Integer>]])</code> | ||
+ | |||
+ | <p>Уведомляет компонент, что в список нужно вставить новые элементы по указанным индексам.</p><div class="info">Компонент умеет отображать изменения с применением анимации. Потокобезопасный метод.</div> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">NotifyItemsRemoved(const AIndicies: [[TArray<System.Integer>]])</code> | ||
+ | |||
+ | <p>Уведомляет компонент, что из списка нужно удалить элементы по указанным индексам.</p><div class="info">Компонент умеет отображать изменения с применением анимации. Потокобезопасный метод.</div> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">NotifyItemMoved(const AFromIndex: [[Integer]]; const AToIndex: [[Integer]])</code> | ||
+ | |||
+ | <p>Уведомляет компонент, что в списке элемент сменил свою позицию с <i>AFromIndex</i> на <i>AToIndex</i> .</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">FindItemWrapperByObject(const AObject: [[TObject]]; out AItemWrapper: [[FGX.CollectionView.TfgItemWrapper|TfgItemWrapper]]): [[Boolean]]</code> | ||
+ | <p>Ищет <i>TfgItemWrapper</i> для работы с контролом элемента по объекту, который принадлежит стилю элемента (по цепочке родителей можно выйти к стилю элемента).</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">FindItemControlByIndex(const AItemIndex: [[Integer]]; out AControl: [[FGX.Controls.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">function</syntaxhighlight> || <code lang="Delphi">GetStyleForItemIndexOrRaise(const AItemIndex: [[Integer]]): [[FGX.CollectionView.TfgCollectionViewStyle|TfgCollectionViewStyle]]</code> | ||
+ | |||
+ | <p>Возвращает стиль элемента по указанному индексу элемента.</p><div class="info">Если стиль не найден, или стилей нет, то бросит исключение.</div> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetStyleForItemControl(const AControl: [[FGX.Controls.TfgControl|TfgControl]]): [[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> | ||
+ | <p>Прокрутка содержимого списка к элементу с указанной позицией с возможностью использовать анимацию <i>AWithAnimation</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">procedure</syntaxhighlight> || <code lang="Delphi">ScrollToItem(const AItemIndex: [[Integer]]; const AItemPosition: [[FGX.CollectionView.TfgItemLocation|TfgItemLocation]]; const AWithAnimation: [[Boolean]])</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">IsScrollInTheEnd(): [[Boolean]]</code> | ||
+ | <p>Прокручено ли содержимое списка в самый конец или нет?</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">GetSelectionColor(const AStyle: [[FGX.CollectionView.TfgCollectionViewStyle|TfgCollectionViewStyle]]): [[TAlphaColor]]</code> | ||
+ | <p>Возвращает цвет выделения для элемента указанного стиля.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">function</syntaxhighlight> || <code lang="Delphi">IsSelectableItem(const AItemIndex: [[Integer]]): [[Boolean]]</code> | ||
+ | <p>Поддерживает ли выделение элемент по указанному индексу?</p> | ||
+ | |- | ||
+ | | <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>SelectionController: [[FGX.CollectionView.TfgCollectionViewSelectionController|TfgCollectionViewSelectionController]]</code> | ||
+ | <p>Контроллер выделения. Отвечает за работу с выделением элементов списка.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>IsPullToRefreshActive: [[Boolean]]</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ColumnWidth: [[Single]]</code> | ||
+ | <p>Возвращает ширину столбца.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ScrollGlowColorLink: [[FGX.Assets.Color.TfgAssetColorLink|TfgAssetColorLink]]</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>ColumnsCount: [[Integer]]</code> | ||
+ | <p>Количество столбцов, по которым размещаются элементы списка.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>DragOptions: [[FGX.CollectionView.TfgDragAndDropOptions|TfgDragAndDropOptions]]</code> | ||
+ | <p>Настройки фунционала перетаскивания элементов между собой.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>PullToRefreshOptions: [[FGX.CollectionView.TfgPullToRefreshOptions|TfgPullToRefreshOptions]]</code> | ||
+ | <p>Настройки режима обновления списка "Потяни и обнови".</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>Padding: [[FGX.Layout.Types.TfgPadding|TfgPadding]]</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>SelectionOptions: [[FGX.CollectionView.TfgSelectionOptions|TfgSelectionOptions]]</code> | ||
+ | <p>Настройки выделения.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>SelectionMode: [[FGX.CollectionView.TfgCollectionViewSelectionMode|TfgCollectionViewSelectionMode]]</code> | ||
+ | <p>Режим выделения элементов. Всего существует три способа выделения:</p> <ul><li><b>None</b> - Элементы не поддерживают выделение.</li> <li><b>SingleSelect</b> - Только один элемент может быть выделени. При этом при попытке выделить другой элемент выделение с предыдущего сбрасывается.</li> <li><b>MultiSelect</b> - Поддерживается выделение любого количества элементов.</li></ul> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>HorzScrollBar: [[FGX.Types.Scroll.TfgScrollBarSettings|TfgScrollBarSettings]]</code> | ||
+ | <p>Настройки отображения горизонтальной полосы прокрутки.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">property</syntaxhighlight> || <code>VertScrollBar: [[FGX.Types.Scroll.TfgScrollBarSettings|TfgScrollBarSettings]]</code> | ||
+ | <p>Настройки отображения вертикальной полосы прокрутки.</p> | ||
+ | |} | ||
+ | |||
+ | == События == | ||
+ | |||
+ | {| 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: [[TfgGetItemIdEvent|TfgGetItemIdEvent]]</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: [[TfgBindItemEvent|TfgBindItemEvent]]</code> | ||
+ | |||
+ | <p>Через это событие происходит связь пользовательских данных с конкретным элементом списка по указанному индексу.</p><div class="info">Все необходимые данные для отображения должны быть уже предварительно загружены и приготовлены к отображению. В этом событие необходимо связать готовые данные с конкретными контролами.</div> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnLongTapItem: [[TfgItemLongTapEvent|TfgItemLongTapEvent]]</code> | ||
+ | |||
+ | <p>Пользователь выполнил долгое нажатие на элемент списка.</p><div class="info">Данное событие работает автоматически. Не нужно отдельно включать значение <i>LongTap</i> в <i>GestureKinds</i> . Особенностью работы данного события - является события даже если долгое нажатие произведено на вложенный в элемент контрол, перехватывающий LongTap.</div> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnTapItem: [[TfgItemTapEvent|TfgItemTapEvent]]</code> | ||
+ | <p>Пользователь нажал на элемент списка.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnUpdateItemSelectionAppearance: [[TfgUpdateItemSelectionAppearanceEvent|TfgUpdateItemSelectionAppearanceEvent]]</code> | ||
+ | <p>Необходимо вручную выполнить визуальное отображение/сброс выделение указаного элемента списка. Данное событие вызывается только при режиме <i>SelectionOptions.PaintingMode = Manual</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnSelectionChanged: [[TfgSelectionChangedEvent|TfgSelectionChangedEvent]]</code> | ||
+ | <p>Пользователь совершил выделение одного или нескольких элементов списка. За возможность выделения элемента отвечает свойство стиля <i>TfgCollectionViewStyle.Selectable</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnItemSelectionChanged: [[TfgItemSelectionChangedEvent|TfgItemSelectionChangedEvent]]</code> | ||
+ | <p>Изменилось выделение у элемента с индексом <i>AItemIndex</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnCanItemSelect: [[TfgCanItemSelectEvent|TfgCanItemSelectEvent]]</code> | ||
+ | <p>Запрос разрешения на установку выделения элемента с индексом <i>AItemIndex</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnCanItemDeselect: [[TfgCanItemDeselectEvent|TfgCanItemDeselectEvent]]</code> | ||
+ | <p>Запрос разрешения на снятие выделения элемента с индексом <i>AItemIndex</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnScroll: [[TfgScrollEvent|TfgScrollEvent]]</code> | ||
+ | <p>Срабатывает, когда содержимое списка прокручивается.</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnPullToRefresh: [[TNotifyEvent]]</code> | ||
+ | <p>Срабатывает, когда пользователь запускает процесс обновления списка. Чтобы это событие работало, нужно обязательно включить поддержку режима обновления данных <i>EnabledPullToRefresh = True</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMovingItem: [[TfgItemMovingEvent|TfgItemMovingEvent]]</code> | ||
+ | <p>Вызывается по ходу перемещения элемента списка. Позволяет запретить перемещение на позицию другого элемента. Чтобы запретить перемещение элемента на новую позицию, нужнео вернуть в параметре <i>AAllowed = False</i> .</p> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">event</syntaxhighlight> || <code>OnMovedItem: [[TfgItemMovedEvent|TfgItemMovedEvent]]</code> | ||
+ | <p>Вызывается после того, как элемент перемещен на новую позицию списка.</p> | ||
+ | |} | ||
+ | |||
+ | == Константы == | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultScrollGlowColor: [[TAlphaColor]]</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultSelectionColor: [[TAlphaColor]]</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultSystemSelectionColor: [[Integer]]</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |- | ||
+ | | <syntaxhighlight lang="Delphi">const</syntaxhighlight> || <code>DefaultColumnsCount: [[Integer]]</code> | ||
+ | <span style="color:gray">Описание отсутствует.</span> | ||
+ | |} |
Текущая версия на 17:16, 23 декабря 2022
Delphi
TfgCustomCollectionView = class (TfgControl, IFGXContainer)
TComponent -> TfgControl -> TfgCustomCollectionView
Прямые наследники: TfgCollectionView
Содержание
Описание
Описание отсутствует.
Конструкторы
constructor
|
Create(AOwner: TComponent)
Описание отсутствует. |
Методы
procedure
|
ReloadItems()
Перезагружает элементы коллекции. Форсирует перезагрузку всех элементов списка. Потокобезопасный метод. Этот метод автоматически завершает процесс PullToRefresh , если он был запущен.
|
procedure
|
ReloadItem(const AItemIndex: Integer)
Перезагружает элемент коллекции по указанному индексу. Потокобезопасный метод.
|
procedure
|
NotifyItemsInserted(const AIndicies: [[TArray<System.Integer>]])
Уведомляет компонент, что в список нужно вставить новые элементы по указанным индексам. Компонент умеет отображать изменения с применением анимации. Потокобезопасный метод.
|
procedure
|
NotifyItemsRemoved(const AIndicies: [[TArray<System.Integer>]])
Уведомляет компонент, что из списка нужно удалить элементы по указанным индексам. Компонент умеет отображать изменения с применением анимации. Потокобезопасный метод.
|
procedure
|
NotifyItemMoved(const AFromIndex: Integer; const AToIndex: Integer)
Уведомляет компонент, что в списке элемент сменил свою позицию с AFromIndex на AToIndex . Компонент умеет отображать изменения с применением анимации. Потокобезопасный метод.
|
function
|
GetItemId(const AItemIndex: Integer): Int64
Возвращает идентификатор элемента по его порядковому индексу. Для этого использует данные, полученные в результате работы обработчика события OnGetItemId . По умолчанию использует порядковый иднекс элемента. |
function
|
FindItemIndexById(const AItemId: Int64; out AItemIndex: Integer): Boolean
Поиск порядкового индекса элемента по его уникальному идентификатору. Задание уникальных идентификаторо элементов осуществляется через событие OnGetItemId . Сложность поиска O(n). Если индекс не найден, то AItemIndex будет содержать -1.
|
function
|
FindItemIndexByPoint(const APoint: TPointF; out AItemIndex: Integer): Boolean
Поиск порядкового индекса элемента по координатам точки в CollectionView, попадающая в один из видимых элементов. Работает только для видимых элементов с индексами в диапазоне GetFirstVisibleItemIndex и GetLastVisibleItemIndex . APoint указывается в системе координат контрола с учетом смещения прокрутки. Если индекс не найден, то AItemIndex будет содержать -1.
|
function
|
FindItemIndexByObject(const AObject: TObject; out AItemIndex: Integer): Boolean
Поиск порядкового индекса элемента по объекту, который принадлежит стилю элемента (по цепочке родителей можно выйти к стилю элемента). Если индекс не найден, то AItemIndex будет содержать -1.
|
function
|
FindItemWrapperByIndex(const AItemIndex: Integer; out AItemWrapper: TfgItemWrapper): Boolean
Ищет TfgItemWrapper для работы с контролом элемента по индексу. Если элемента по указанному индексу нет, то в AItemWrapper будет nil. Работает только для индексов в диапазоне GetFirstVisibleItemIndex и GetLastVisibleItemIndex . Сложность O(1).
|
function
|
FindItemWrapperByObject(const AObject: TObject; out AItemWrapper: TfgItemWrapper): Boolean
Ищет TfgItemWrapper для работы с контролом элемента по объекту, который принадлежит стилю элемента (по цепочке родителей можно выйти к стилю элемента). |
function
|
FindItemControlByIndex(const AItemIndex: Integer; out AControl: TfgControl): Boolean
Ищет контрол TfgControl элемента по индексу. Если элемента по указанному индексу нет, то в AControl будет nil. Работает только для индексов в диапазоне GetFirstVisibleItemIndex и GetLastVisibleItemIndex . Сложность O(1).
|
function
|
GetFirstVisibleItemIndex(): Integer
Возвращает индекс первого видимого элемента на экране. Если список пуст, то вернет -1.
|
function
|
GetLastVisibleItemIndex(): Integer
Возвращает индекс последнего видимого элемента на экране. Если список пуст, то вернет -1.
|
function
|
CreateStyle(): TfgCollectionViewStyle
Создает новый пустой стиль с уникальным именем TfgCollectionViewStyle.TfgStyleName . |
procedure
|
AddStyle(const AStyle: TfgCollectionViewStyle)
Добавляет стиль в список стилей контрола. |
function
|
GetStyle(const AStyleName: string): TfgCollectionViewStyle
Возвращает стиль по его имени. Если стиль не найден, то вернет nil.
|
function
|
GetStyleIndex(const AStyleName: string): Integer
Возвращает индекс стиля по его имени. Первый стиль имеет индекс 0. Если стиль не найден, то вернет -1.
|
function
|
GetStyleForItemIndex(const AItemIndex: Integer): TfgCollectionViewStyle
Возвращает стиль элемента по указанному индексу элемента. Если стиль не найден, или стилей нет, то вернет nil.
|
function
|
GetStyleForItemIndexOrRaise(const AItemIndex: Integer): TfgCollectionViewStyle
Возвращает стиль элемента по указанному индексу элемента. Если стиль не найден, или стилей нет, то бросит исключение.
|
function
|
GetStyleForItemControl(const AControl: TfgControl): TfgCollectionViewStyle
Возвращает стиль элемента по указанному контролу, которые находится в элементе. Если стиль не найден, или стилей нет, то вернет nil.
|
procedure
|
ScrollToItem(const AItemIndex: Integer; const AWithAnimation: Boolean)
Прокрутка содержимого списка к элементу с указанной позицией с возможностью использовать анимацию AWithAnimation . |
procedure
|
ScrollToItem(const AItemIndex: Integer; const AItemPosition: TfgItemLocation; const AWithAnimation: Boolean)
Описание отсутствует. |
function
|
IsScrollInTheEnd(): Boolean
Прокручено ли содержимое списка в самый конец или нет? |
function
|
GetSelectionColor(const AStyle: TfgCollectionViewStyle): TAlphaColor
Возвращает цвет выделения для элемента указанного стиля. |
function
|
IsSelectableItem(const AItemIndex: Integer): Boolean
Поддерживает ли выделение элемент по указанному индексу? |
procedure
|
BeginPullToRefresh()
Запускает программным способом процесс обновления данных с одновременным отображением индикатора загрузки. Разработчик должен выполнить/запустить процесс обновления данных и по окончании загрузки данных сообщить об этом контролу, вызвав EndPullToRefresh . Обратите внимание, что для визуального обновления данных, разработчику так же нужно воспользовать одним из методов обновления данных ReloadItems или ReloadItem . Если список уже находится в состоянии обновления IsPullToRefreshActive = True , то метод не будет запускать новый процесс обновления.
|
procedure
|
EndPullToRefresh()
Заканчивает процесс обновления данных, начатый пользователем. Это приводит к скрытию индикатора загрузки и загрузки данных в список. Обратите внимание, что для визуального обновления данных, разработчику так же нужно воспользовать одним из методов обновления данных ReloadItems или ReloadItem . Потокобезопасный метод. Можно вызывать не из главного потока.
|
Свойства
property
|
Count: Integer
Возвращает общее количество элементов списка. Использует обработчик OnGetItemCount . |
property
|
StylesContainer: TfgCollectionViewStyles
Контейнер стилей, содержит все стили коллекции. |
property
|
ContentOffset: TPointF
Возвращает смещение контента. |
property
|
SelectionController: TfgCollectionViewSelectionController
Контроллер выделения. Отвечает за работу с выделением элементов списка. |
property
|
IsPullToRefreshActive: Boolean
Описание отсутствует. |
property
|
ColumnWidth: Single
Возвращает ширину столбца. |
property
|
ScrollGlowColorLink: TfgAssetColorLink
Описание отсутствует. |
property
|
ColumnsCount: Integer
Количество столбцов, по которым размещаются элементы списка. |
property
|
DragOptions: TfgDragAndDropOptions
Настройки фунционала перетаскивания элементов между собой. |
property
|
PullToRefreshOptions: TfgPullToRefreshOptions
Настройки режима обновления списка "Потяни и обнови". |
property
|
Padding: TfgPadding
Внутренние отступы, учитывающиеся при выравнивании элементов. |
property
|
ScrollGlowColor: TAlphaColor
Цвет эффекта прокручивания списка, который появляется при попытке прокрутить список за его границы. Актуально только для Андроид платформы.
|
property
|
ScrollGlowColorName: TfgAssetName
Описание отсутствует. |
property
|
SelectionColor: TAlphaColor
Общий цвет выделение элементов по умолчанию. Каждый стиль элемента может переопределить это значение через аналогичное свойство TfgCollectionViewStyle.SelectionColor . Если указан цвет TAlphaColorRec.Null , то компонент будет использовать системный цвет для выделения, который зависит от платформы и версии ОС.
|
property
|
SelectionColorName: TfgAssetName
Название ресурса цвета выделения элементов в контроле. |
property
|
SelectionOptions: TfgSelectionOptions
Настройки выделения. |
property
|
SelectionMode: TfgCollectionViewSelectionMode
Режим выделения элементов. Всего существует три способа выделения:
|
property
|
HorzScrollBar: TfgScrollBarSettings
Настройки отображения горизонтальной полосы прокрутки. |
property
|
VertScrollBar: TfgScrollBarSettings
Настройки отображения вертикальной полосы прокрутки. |
События
event
|
OnGetItemCount: Integer
Через это событие компонент запрашивает общее количество элементов, которые необходимо отобразить. Компонент постоянно использует это событие для получения количества элементов. Поэтому избегайте практики долгого вычисления количества. Это может сказать на скорости прокрутки списка.
|
event
|
OnGetItemId: TfgGetItemIdEvent
Через это событие компонент запрашивает уникальный идентификатор элемента. Эта информация может использоваться контролом для визуального выделения изменения элементов на экране при обновлении списка. По мимо этот идентификтор используется для корректного выделения элементов в случае, когда пользователь меняет данные элементов, добавляет или удаляет их. Обязательно должен быть уникальным среди идентификаторов всех элементов!
|
event
|
OnGetItemStyle: string
Через это событие компонент запрашивает название стиля, которое необходимо применить к элементу по указанному индексу. Компонент использует это событие в момент, когда указанный элемент готовится появится на экране. Обратите внимание, что если у вас в коллекции используется только один стиль, то это событие можно не использовать. Компонент автоматически выберет первый стиль, если вы не используете это событие.
|
event
|
OnBindItem: TfgBindItemEvent
Через это событие происходит связь пользовательских данных с конкретным элементом списка по указанному индексу. Все необходимые данные для отображения должны быть уже предварительно загружены и приготовлены к отображению. В этом событие необходимо связать готовые данные с конкретными контролами.
|
event
|
OnLongTapItem: TfgItemLongTapEvent
Пользователь выполнил долгое нажатие на элемент списка. Данное событие работает автоматически. Не нужно отдельно включать значение LongTap в GestureKinds . Особенностью работы данного события - является события даже если долгое нажатие произведено на вложенный в элемент контрол, перехватывающий LongTap.
|
event
|
OnTapItem: TfgItemTapEvent
Пользователь нажал на элемент списка. |
event
|
OnUpdateItemSelectionAppearance: TfgUpdateItemSelectionAppearanceEvent
Необходимо вручную выполнить визуальное отображение/сброс выделение указаного элемента списка. Данное событие вызывается только при режиме SelectionOptions.PaintingMode = Manual . |
event
|
OnSelectionChanged: TfgSelectionChangedEvent
Пользователь совершил выделение одного или нескольких элементов списка. За возможность выделения элемента отвечает свойство стиля TfgCollectionViewStyle.Selectable . |
event
|
OnItemSelectionChanged: TfgItemSelectionChangedEvent
Изменилось выделение у элемента с индексом AItemIndex . |
event
|
OnCanItemSelect: TfgCanItemSelectEvent
Запрос разрешения на установку выделения элемента с индексом AItemIndex . |
event
|
OnCanItemDeselect: TfgCanItemDeselectEvent
Запрос разрешения на снятие выделения элемента с индексом AItemIndex . |
event
|
OnScroll: TfgScrollEvent
Срабатывает, когда содержимое списка прокручивается. |
event
|
OnPullToRefresh: TNotifyEvent
Срабатывает, когда пользователь запускает процесс обновления списка. Чтобы это событие работало, нужно обязательно включить поддержку режима обновления данных EnabledPullToRefresh = True . |
event
|
OnMovingItem: TfgItemMovingEvent
Вызывается по ходу перемещения элемента списка. Позволяет запретить перемещение на позицию другого элемента. Чтобы запретить перемещение элемента на новую позицию, нужнео вернуть в параметре AAllowed = False . |
event
|
OnMovedItem: TfgItemMovedEvent
Вызывается после того, как элемент перемещен на новую позицию списка. |
Константы
const
|
DefaultScrollGlowColor: TAlphaColor
Описание отсутствует. |
const
|
DefaultSelectionColor: TAlphaColor
Описание отсутствует. |
const
|
DefaultSystemSelectionColor: Integer
Описание отсутствует. |
const
|
DefaultColumnsCount: Integer
Описание отсутствует. |