FMX中的 Delphi 列表视图发生了什么(.Detail和.Text丢失)?

63lcw9qa  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(125)

几年前,我使用这样的代码:

ShowMessage(lvDrinksListview.Items.Item[lvDrinksListview.ItemIndex].Text);
ShowMessage(lvDrinksListview.Items.Item[lvDrinksListview.ItemIndex].Detail);

我现在使用的是 Delphi 11社区版,下面的代码报告了错误:

[dcc64 Error] uMain.pas(652): E2003 Undeclared identifier: 'Detail'
[dcc64 Error] uMain.pas(651): E2003 Undeclared identifier: 'Text'

这是一个FMX应用程序。
DetailText的替代品是什么?

c7rzv4ha

c7rzv4ha1#

有一个big refactoring of TListView in Delphi 10.0 Seattle。你的旧代码早于那个版本。
Item[]属性现在返回一个基类TListItem,它没有您要查找的DetailText属性,因此出现错误。
要解决这个问题,您可以简单地将每个Item类型转换为TListViewItem,它派生自TListItem并且具有您想要的属性,例如:

ShowMessage(TListViewItem(lvDrinksListview.Items[lvDrinksListview.ItemIndex]).Text);
ShowMessage(TListItemItem(lvDrinksListview.Items[lvDrinksListview.ItemIndex]).Detail);

我建议你使用一个局部变量来清理一下:

var Item := TListViewItem(lvDrinksListview.Items[lvDrinksListview.ItemIndex]);
ShowMessage(Item.Text);
ShowMessage(Item.Detail);

相关问题