Refactoring des Listenansichts-Steuerelements in Seattle
Nach oben zu Neuerungen in Seattle
Die API der Listenansicht von RAD Studio Seattle wurde umgestaltet. Die Listenansichts- und Listenansichtseintrags-Komponenten wurden in verschiedene Ebenen aufgeteilt, um eine flexiblere Listenansichts-API bereitzustellen, die einfacher erweiterbar ist als in XE8.
Diese Änderungen sollten sich kaum auf Projekte auswirken, die einfach die TListView-Komponente verwenden. Diese Änderungen können jedoch merklichen Einfluss auf Projekte haben, in denen Unterklassen von Listenansichts- oder Listenansichtseintrags-Klassen abgeleitet werden.
Inhaltsverzeichnis
TCustomListView wurde in fünf Klassen aufgeteilt
TCustomListView
wurde in die folgenden Klassen aufgeteilt, die voneinander erben:
Als Folge dieser Umgestaltung wurden viele Member aus TCustomListView
entfernt und den neuen Listenansichts-Klassen neue Member hinzugefügt:
Außerdem:
- Es wurden zwei neue Interfaces erstellt, IAppearanceItemOwner und IPublishedAppearanceOwner, die TAppearanceListView implementiert.
- Durch die neue Implementierung der Prozedur
Resize
wurden die ProzedurenResizeAppearances
undResizeObjects
überflüssig und daher entfernt. BeginAppearanceUpdate
undEndAppearanceUpdate
wurden jeweils durch BeginUpdate und EndUpdate ersetzt.
TListViewItems wurde in vier Klassen aufgeteilt
TListViewItems
wurde in eine neue Unit, FMX.ListView.Adapters.Base, verschoben und in die folgenden Klassen aufgeteilt, die voneinander erben:
Als Folge dieser Umgestaltung wurden die folgenden Member aus TListViewItems
entfernt:
Klasse oder Unit | Member von TListViewItems
|
Neue Member |
---|---|---|
TAbstractListViewAdapter |
Public:
|
Public:
Protected: |
TFilterableListViewItems |
Public: |
Protected: |
TAppearanceListViewItems |
Public: Protected: |
Protected:
|
FMX.ListView.Types |
|
Aufgrund dieser Umgestaltung wurden die folgenden neuen Interfaces erstellt, die diese Listeneintrags-Klassen implementieren:
Klasse | Interfaces |
---|---|
TListViewItems | |
TFilterableListViewItems | |
TAppearanceListViewItems |
Klassen für das Objekterscheinungsbild nach FMX.ListView.Appearances verschoben
Die folgenden Klassen wurden in die Unit FMX.ListView.Appearances verschoben:
- TAccessoryObjectAppearance
- TAppearanceObjects
- TCommonObjectAppearance
- TCustomAccessoryObjectAppearance
- TCustomGlyphButtonObjectAppearance
- TCustomImageObjectAppearance
- TCustomItemObjects
- TCustomTextButtonObjectAppearance
- TCustomTextObjectAppearance
- TEmptyItemObjects
- TGlyphButtonObjectAppearance
- TImageObjectAppearance
- TItemAppearanceObjects
- TItemAppearanceProperties
- TNullItemObjects
- TObjectAppearance
- TPresetItemObjects
- TTextButtonObjectAppearance
- TTextObjectAppearance
TListItemObject wurde umbenannt und geändert
TListItemObject wurde in TListItemDrawable umbenannt und ist jetzt nur noch aus Gründen der Abwärtskompatibilität als leere Unterklasse von TListItemDrawable
vorhanden.
Zusätzlich wurden die folgenden Änderungen an TListItemDrawable
vorgenommen:
- Das Feld
FLocalRect
wurde zur Eigenschaft LocalRect. - Es wurde eine neue Funktion, InLocalRect, hinzugefügt.
- Die Sichtbarkeit von CalculateLocalRect wurde von protected in public geändert.
TListItemObjectClass wurde nach FMX.ListView.Appearances verschoben und ist jetzt eine Klassenreferenz von TListItemDrawable.
TListItemObjects wurde in TListItemView umbenannt und ist jetzt nur noch aus Gründen der Abwärtskompatibilität als leere Unterklasse von TListItemView
vorhanden.
Zusätzlich wurden die folgenden Änderungen an TListItemView
vorgenommen:
- Die Eigenschaft
ItemList
wurde in ViewList umbenannt. Und deren Sichtbarkeit von protected in public geändert. - Die Eigenschaft
Objects
wurde in Drawables umbenannt. - Die Funktion FindObject ist jetzt veraltet, verwenden Sie stattdessen die neue Funktion FindDrawable.
- Die Funktion ObjectByName ist jetzt veraltet, verwenden Sie stattdessen die neue Funktion DrawableByName.
- Es wurde eine neue Prozedur, Insert, hinzugefügt.
TListItem wurde geändert
In TListItem:
- Zwei neue Eigenschaften: Adapter, Index.
- Die protected
FHeaderRef
-Felder wurden durch die public Eigenschaft HeaderRef ersetzt. - Der Typ
TListItemObjectsType
wurde in TListItemViewType umbenannt. - Die Eigenschaft
Objects
wurde in View umbenannt. - Mit dem Feld
FParent
können Sie nicht mehr auf das übergeordnete Steuerelement der Eintragsliste zugreifen, die Sie an den Konstruktor übergeben haben.
Weitere Änderungen
- Die Prozedur TCustomListView.ClearItems, die bereits in XE8 veraltet war, wurde entfernt. Verwenden Sie stattdessen TCustomListView.Items.Clear.
- Appearances.TListViewItem wurde nach FMX.ListView.Appearances verschoben, und es gibt in
FMX.ListView.Appearances
einen neuen Alias dafür: TAppearanceListViewItem. - Die Klasse TListItemImage stellt eine neue Prozedur bereit: FitInto.
- Das Interface IListItemStyleResources definiert eine neue Funktion: StyleResourcesNeedUpdate.
- Das Interface IListViewPresentationParent definiert die folgenden neuen Methoden: GetAdapter, GetItemClientRect, RebuildList. Außerdem gibt DeleteItem jetzt einen booleschen Wert zurück, der angibt, ob die Löschung erfolgreich war oder nicht.
- Neuer Typ, TListItemsList, der ein Alias von TList<TListItem> ist.
- TAppearancesRegistry, eine neue Klasse, die Member enthält, die aus
TCustomListView
übernommen wurden, stellt eine weitere neue Funktion bereit: FindItemAppearanceObjectsClassByOption. - Die Sichtbarkeit der Eigenschaft Owner von TPublishedAppearance wurde von public in published geändert.
- Die Eigenschaft
Owner
von TPublishedObjects ist nicht mehr verfügbar.