在RAD Studio 10 Seattle中,我的ListView的属性".Text"和".Detail"被加下划线为错误.我该如何解决?

Geo*_*eth 1 delphi text listview detail delphi-10-seattle

我刚刚下载了RAD Studio 10 Seattle,并开设了一个我在RAD Studio XE8中开发的程序.在XE8中,我的程序绝对没有错误.但是,当我在10西雅图打开程序并尝试运行它时,它给了我大约60个错误.我查看了我的代码,并列出了"listview.items.item [] .text"和"listview.items.item [].detail"的所有实例.当我查看"listview.items.item []"的可能属性时,".text"和".detail"不存在.你如何解决/解决这个问题?

提前谢谢,乔治.

Rem*_*eau 9

FireMonkey的FMX.ListView.TListView组件及其相关类在西雅图经历了广泛的重构.这在Embarcadero的DocWiki中有记录:

什么是新的| 重构列表视图控件

以前在TCustomListView中的许多成员现在处于不同的类或甚至不同的单元中.进入不同类的成员继续通过继承成为TCustomListView的一部分.

有关更改的详细列表,请参阅在Seattle中重构列表视图控件.

重构页面没有具体提及TextDetail属性.但是,DocWiki的其他页面提供了缺失的线索:

什么是新的| 其他FireMonkey更改

现在,您必须将TListView.Selected转换Appearances.TListViewItem才能使用它.

FMX.ListView.TListViewBase.Selected

要将Selected用作Appearances.TListViewItem的实例,必须将其强制转换为:

德尔福:

SelectedItemText := TListViewItem(TListView1.Selected).Text;
Run Code Online (Sandbox Code Playgroud)

C++:

SelectedItemText = ((TListViewItem*)(TListView1->Selected))->Text;
Run Code Online (Sandbox Code Playgroud)

TListView.Selected物业仍然FMX.ListView.Types.TListItem像以前一样返回.然而,TListItem不再有它自己DetailText性能.他们已经被转移到了这个FMX.ListView.Appearances.TListViewItem课程中TListItem.

TListView仍然FMX.ListView.TCustomListView像以前一样派生,但现在TCustomListView派生自XE8中不存在的一组新基类:

XE8:

FMX.Controls.TStyledControl
↓ ↓
FMX.ListView.TCustomListView

FMX.ListView.TListView

西雅图:

FMX.Controls.TStyledControl
↓ ↓ ↓ ↓ ↓ ↓
FMX.ListView.TAdapterListView

FMX.ListView.TListViewBase

FMX.ListView.TPresentedListView

FMX.ListView.TAppearanceListView

FMX.ListView.TCustomListView

FMX.ListView.TListView

因此,所有列表项对象TListView都是FMX.ListView.Appearances.TAppearanceListViewItem类的实例,它来源于TListViewItem.

因此,在访问已移至的任何属性时,您必须相应地进行类型TListItem转换TListViewItem,其中包括DetailText属性等.