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