Refactoring du contrôle vue liste dans Seattle
Remonter à Nouveautés de Seattle
L'API de la vue liste RAD Studio Seattle a été refactorisée. Les composants vue liste et élément de vue liste sont divisés en différentes couches afin de fournir une API de vue liste plus flexible et facile à étendre que dans XE8.
Ces modifications devraient à peine affecter les projets qui utilisent simplement le composant TListView. Toutefois, ces modifications peuvent affecter notablement les projets qui sous-classent une classe vue liste ou élément de vue liste.
Sommaire
TCustomListView a été divisée en cinq classes
TCustomListView
a été fractionnée dans les classes suivantes qui héritent les unes des autres :
Comme conséquence de ce refactoring, de nombreux membres ont été déplacés à partir de TCustomListView
, et de nouveaux membres ont été ajoutés aux nouvelles classes vue liste :
En outre :
- Deux nouvelles interfaces ont été créées, IAppearanceItemOwner et IPublishedAppearanceOwner, que TAppearanceListView implémente.
- La nouvelle implémentation de la procédure
Resize
a rendu obsolètes les procéduresResizeAppearances
etResizeObjects
, qui ont été retirées. BeginAppearanceUpdate
etEndAppearanceUpdate
ont été remplacées par BeginUpdate et EndUpdate, respectivement.
TListViewItems a été divisée en quatre classes
TListViewItems
a été déplacée dans une nouvelle unité, FMX.ListView.Adapters.Base, et a été fractionnée dans les classes suivantes qui héritent les unes des autres :
Comme conséquence de ce refactoring, les membres suivants ont été déplacés à partir de TListViewItems
:
Classe ou unité | Membres de TListViewItems
|
Nouveaux membres |
---|---|---|
TAbstractListViewAdapter |
Publics :
|
Publics :
Protégés : |
TFilterableListViewItems |
Publics : |
Protégés : |
TAppearanceListViewItems |
Publics : Protégés : |
Protégés :
|
FMX.ListView.Types |
|
Ce refactoring résultait également de la création des nouvelles interfaces suivantes que ces classes d'éléments de vue liste implémentent :
Classe | Interfaces |
---|---|
TListViewItems | |
TFilterableListViewItems | |
TAppearanceListViewItems |
Les classes d'apparence d'objets ont été déplacées dans FMX.ListView.Appearances
Les classes suivantes ont été déplacées dans l'unité FMX.ListView.Appearances :
- TAccessoryObjectAppearance
- TAppearanceObjects
- TCommonObjectAppearance
- TCustomAccessoryObjectAppearance
- TCustomGlyphButtonObjectAppearance
- TCustomImageObjectAppearance
- TCustomItemObjects
- TCustomTextButtonObjectAppearance
- TCustomTextObjectAppearance
- TEmptyItemObjects
- TGlyphButtonObjectAppearance
- TImageObjectAppearance
- TItemAppearanceObjects
- TItemAppearanceProperties
- TNullItemObjects
- TObjectAppearance
- TPresetItemObjects
- TTextButtonObjectAppearance
- TTextObjectAppearance
TListItemObject a été renommée et modifiée
TListItemObject a été renommée TListItemDrawable, et existe maintenant uniquement en tant que sous-classe vide de TListItemDrawable
à des fins de compatibilité descendante.
En outre, TListItemDrawable
a subi les modifications suivantes :
- Le champ
FLocalRect
devient la propriété LocalRect. - Elle fournit une nouvelle fonction : InLocalRect.
- La visibilité de CalculateLocalRect est passée de protected à public.
TListItemObjectClass a été déplacée dans FMX.ListView.Appearances et elle est maintenant une référence de classe de TListItemDrawable.
TListItemObjects a été renommée TListItemView, et existe maintenant uniquement en tant que sous-classe vide de TListItemView
à des fins de compatibilité descendante.
En outre, TListItemView
a subi les modifications suivantes :
- La propriété
ItemList
a été renommée ViewList. Par ailleurs, sa visibilité est passée de protected à public. - La propriété
Objects
a été renommée Drawables. - La fonction FindObject est désormais obsolète. Utilisez à la place la nouvelle fonction FindDrawable.
- La fonction ObjectByName est désormais obsolète. Utilisez à la place la nouvelle fonction DrawableByName.
- Elle fournit une nouvelle procédure : Insert.
TListItem a subi quelques modifications
Dans TListItem :
- Deux nouvelles propriétés : Adapter, Index.
- Les champs
FHeaderRef
protégés ont été remplacés par la propriété publique HeaderRef. - Le type
TListItemObjectsType
a été renommé TListItemViewType. - La propriété
Objects
a été renommée View. - Vous ne pouvez plus utiliser le champ
FParent
pour accéder au contrôle parent de la liste d'éléments que vous transmettez au constructeur.
Autres modifications
- TCustomListView.ClearItems, qui était déjà obsolète dans XE8, a été retirée. Utilisez TCustomListView.Items.Clear à la place.
- Appearances.TListViewItem a été déplacée dans FMX.ListView.Appearances, et elle dispose d'un nouvel alias pour lui dans
FMX.ListView.Appearances
: TAppearanceListViewItem. - La classe TListItemImage fournit une nouvelle procédure : FitInto.
- L'interface IListItemStyleResources définit une nouvelle fonction : StyleResourcesNeedUpdate.
- L'interface IListViewPresentationParent définit les nouvelles méthodes suivantes : GetAdapter, GetItemClientRect, RebuildList. Par ailleurs, DeleteItem renvoie à présent une valeur booléenne qui indique si la suppression a réussi.
- Nouveau type, TListItemsList, qui est un alias de TList<TListItem>.
- TAppearancesRegistry, une nouvelle classe qui contient des membres qui ont été retirés de
TCustomListView
, fournit une nouvelle fonction supplémentaire : FindItemAppearanceObjectsClassByOption. - La visibilité de la propriété Owner de TPublishedAppearance est passée de public à published.
- La propriété
Owner
de TPublishedObjects n'est plus disponible.