现在我正在使用以下代码来获取ListView项值,我想知道这是否是正确的方法,或者我应该采取另一种方式。
父项值的示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ListView1.Selected.Caption);
end;
子项目值的示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ListView1.Selected.SubItems.Strings[items_index_here]);
end;
答案 0 :(得分:8)
您的第一个代码似乎没问题,但您应首先查看是否有Selected
项:
if Assigned(ListView1.Selected) then // or ListView1.Selected <> nil
ShowMessage(ListView1.Selected.Caption);
您的第二个可以简化(并且应该包括我上面提到的相同检查):
if Assigned(ListView1.Selected) then
ShowMessage(ListView1.Selected.SubItems[Index]);
TStrings
后代(如TStringList
和TListItem.SubItems
)具有默认属性,这是使用TStrings.Strings[Index]
的快捷方式;你可以改用TStrings[Index]
。您可以使用MyStringList.Strings[0]
代替MyStringList[0]
,而这也适用于TMemo.Lines
和TListItem.SubItems
等内容。您不需要SubItems.Strings[Index]
,但可以使用SubItems[Index]
。