在Delphi中检索listview项值的正确方法是什么

avu*_*vue 1 delphi tlistview

现在我使用以下代码获取ListView项值,我想知道这是否是正确的方法,或者我应该以另一种方式.

父项值的示例:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ListView1.Selected.Caption);
end;
Run Code Online (Sandbox Code Playgroud)

子项值的示例:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ListView1.Selected.SubItems.Strings[items_index_here]);
end;
Run Code Online (Sandbox Code Playgroud)

Ken*_*ite 8

你的第一个代码似乎很好,除了你应该检查是否有一个Selected项目:

if Assigned(ListView1.Selected) then  // or ListView1.Selected <> nil
  ShowMessage(ListView1.Selected.Caption);
Run Code Online (Sandbox Code Playgroud)

你的第二个可以简化(并应包括我上面提到的相同检查):

if Assigned(ListView1.Selected) then
  ShowMessage(ListView1.Selected.SubItems[Index]);
Run Code Online (Sandbox Code Playgroud)

TStrings后代(如TStringListTListItem.SubItems)具有默认属性,这是使用的快捷方式TStrings.Strings[Index]; 你可以改用它TStrings[Index].相反的MyStringList.Strings[0],你可以使用MyStringList[0],这也适用于像的东西TMemo.Lines,并TListItem.SubItems为好.你不需要SubItems.Strings[Index],但可以使用SubItems[Index].