现在,我正在使用以下代码来获取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;

最佳答案

您的第一个代码看起来不错,除了您应该先检查是否有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后代(例如TStringListTListItem.SubItems)具有默认属性,这是使用TStrings.Strings[Index]的快捷方式;您可以改为使用TStrings[Index]。可以使用MyStringList.Strings[0]代替MyStringList[0],这也适用于TMemo.LinesTListItem.SubItems之类的东西。您不需要SubItems.Strings[Index],而只需使用SubItems[Index]

关于delphi - 在Delphi中检索listview项目值的正确方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11589025/

10-13 02:44