Seattle におけるリスト ビュー コントロールのリファクタリング
Seattle の新機能 への移動
RAD Studio Seattle のリスト ビュー API がリファクタリングされました。リスト ビュー コンポーネントとリスト ビュー項目コンポーネントは異なるレイヤに分割され、XE8 のときよりも柔軟で拡張しやすいリスト ビュー API になっています。
この変更は、TListView コンポーネントをただ使用しているだけのプロジェクトにはほとんど影響しないはずです。ただし、リスト ビュー クラスやリスト ビュー項目クラスのサブクラスを作成しているプロジェクトには、大きな影響を及ぼす可能性があります。
目次
TCustomListView が 5 つのクラスに分割された
TCustomListView
は、順に継承関係のある以下のクラスに分割されました。
このリファクタリングの結果、次の表に示すように、多くのメンバが TCustomListView
から他に移動し、また、これら新しいリスト ビュー クラスに新しいメンバが追加されました。
また、次の変更も行われています。
- IAppearanceItemOwner および IPublishedAppearanceOwner という 2 つのインターフェイスが新しく作成され、それを TAppearanceListView が実装しています。
- 新しく
Resize
手続きを実装したことで、ResizeAppearances
とResizeObjects
の手続きが不要になり、削除されました。 BeginAppearanceUpdate
およびEndAppearanceUpdate
は、BeginUpdate および EndUpdate にそれぞれ置き換わりました。
TListViewItems が 4 つのクラスに分割された
TListViewItems
が FMX.ListView.Adapters.Base という新しいユニットに移動し、順に継承関係のある以下のクラスに分割されました。
このリファクタリングの結果、以下のメンバが TListViewItems
から他に移動しました。
クラスまたはユニット | TListViewItems から移動したメンバ
|
新しく追加されたメンバ |
---|---|---|
TAbstractListViewAdapter |
public:
|
public:
protected: |
TFilterableListViewItems |
public: |
protected: |
TAppearanceListViewItems |
public: protected: |
protected:
|
FMX.ListView.Types |
|
このリファクタリングの結果、以下の新しいインターフェイスも作成され、それをリスト ビュー項目のクラスが実装しています。
クラス | インターフェイス |
---|---|
TListViewItems | |
TFilterableListViewItems | |
TAppearanceListViewItems |
オブジェクト外観クラスが FMX.ListView.Appearances に移動した
以下のクラスが FMX.ListView.Appearances ユニットに移動しました。
- TAccessoryObjectAppearance
- TAppearanceObjects
- TCommonObjectAppearance
- TCustomAccessoryObjectAppearance
- TCustomGlyphButtonObjectAppearance
- TCustomImageObjectAppearance
- TCustomItemObjects
- TCustomTextButtonObjectAppearance
- TCustomTextObjectAppearance
- TEmptyItemObjects
- TGlyphButtonObjectAppearance
- TImageObjectAppearance
- TItemAppearanceObjects
- TItemAppearanceProperties
- TNullItemObjects
- TObjectAppearance
- TPresetItemObjects
- TTextButtonObjectAppearance
- TTextObjectAppearance
TListItemObject の名前と内容が変更された
TListItemObject が TListItemDrawable という名前に変更され、元の名前は下位互換性を保つために TListItemDrawable
の空のサブクラスとしてだけ残されています。
さらに、TListItemDrawable
に対して以下の変更が行われました。
FLocalRect
フィールドが LocalRect プロパティになりました。- 新しい関数 InLocalRect が追加されました。
- CalculateLocalRect の可視性が protected から public に変更されました。
TListItemObjectClass が FMX.ListView.Appearances に移動し、TListItemDrawable のクラス参照になりました。
TListItemObjects が TListItemView という名前に変更され、元の名前は下位互換性を保つために TListItemView
の空のサブクラスとしてだけ残されています。
さらに、TListItemView
に対して以下の変更が行われました。
ItemList
プロパティの名前が ViewList に変更されました。また、その可視性が protected から public に変更されました。Objects
プロパティの名前が Drawables に変更されました。- FindObject 関数が非推奨になりました。この関数の代わりに新しい FindDrawable 関数を使用してください。
- ObjectByName 関数が非推奨になりました。この関数の代わりに新しい DrawableByName 関数を使用してください。
- 新しい手続き Insert が追加されました。
TListItem に変更が加えられた
TListItem に以下の変更が加えられました。
- Adapter および Index という 2 つの新しい手続きが追加されました。
- protected の
FHeaderRef
フィールドが public の HeaderRef プロパティに置き換えられました。 TListItemObjectsType
型の名前が TListItemViewType に変更されました。Objects
プロパティの名前が View に変更されました。- コンストラクタに渡した項目リストの親コントロールに、
FParent
フィールドを使ってアクセスできなくなりました。
その他の変更
- XE8 で非推奨になっていた TCustomListView.ClearItems が削除されました。代わりに TCustomListView.Items.Clear を使用してください。
- Appearances.TListViewItem は FMX.ListView.Appearances に移り、その新しいエイリアス(TAppearanceListViewItem)が
FMX.ListView.Appearances
にあります。 - TListItemImage クラスに FitInto という新しい手続きが追加されました。
- IListItemStyleResources インターフェイスに StyleResourcesNeedUpdate という新しい関数が定義されました。
- IListViewPresentationParent インターフェイスに、GetAdapter、GetItemClientRect、RebuildList という新しいメソッドが定義されました。また、DeleteItem が、削除が成功したかどうかを示す論理値を返すようになりました。
- TListItemsList という新しい型が追加されました。これは TList<TListItem> のエイリアスです。
TCustomListView
から移動したいくつかのメンバを含む新しいクラス TAppearancesRegistry に、FindItemAppearanceObjectsClassByOption という新しい関数が追加されました。- TPublishedAppearance の Owner プロパティの可視性が public から published に変更されました。
- TPublishedObjects の
Owner
プロパティが利用できなくなりました。