如何在不使用所选项目的情况下获取其子项目等于某个字符串的listview项目的索引?

时间:2015-05-15 00:04:32

标签: delphi listview delphi-xe7

我目前在我的项目中使用列表视图我想通过查找其子项字符串得到某个项目的索引,我有项目和子项目的列表视图,item caption := namesubitem := id我想找到索引这个项目sub item := id,我怎么能这样做,我搜索了一些方程式,但还没有。我需要这个的原因是因为subitem id有唯一的id而且这个很安全而不是通过标题使用find item

1 个答案:

答案 0 :(得分:7)

您需要遍历列表视图的Items,查看要匹配的正确子项。例如,给定TListView有三列(A,B和C),搜索B列以查找内容:

function TForm1.FindListIndex(const TextToMatch: string): Integer;
var
  i: Integer;
begin
  for i := 0 to ListView1.Items.Count - 1 do
    if ListView1.Items[i].SubItems[1] = TextToMatch then
      Exit(i);
  Result := -1;
end;

当然,替换你自己的匹配函数(例如,SameText):

if SameText(ListView1.Items[i].SubItems[1], TextToMatch) then
   ...;

如果您想在任何子项目中搜索匹配项,您只需要一个嵌套循环:

function TForm1.FindListIndex(const TextToMatch: string): Integer;
var
  i, j: Integer;
begin
  for i := 0 to ListView1.Items.Count - 1 do
    for j := 0 to ListView1.Items[i].SubItems.Count - 1 do
      if ListView1.Items[i].SubItems[j] = TextToMatch then
        Exit(i);
  Result := -1;
end;