我提取某行某列的信息。
之前有人发过这种问题,我看了一下,
有人提出解决方案是:
ListView.Items.Item[I] //控制ListView的第I行ListView.Items.Item[I].SubItems.Strings[j] //控制ListView的第I行的第j-1列
我试了,可是编译时却出了列表索引越界的问题。这是怎么回事,是不是这样的写法是错的?
之前有人发过这种问题,我看了一下,
有人提出解决方案是:
ListView.Items.Item[I] //控制ListView的第I行ListView.Items.Item[I].SubItems.Strings[j] //控制ListView的第I行的第j-1列
我试了,可是编译时却出了列表索引越界的问题。这是怎么回事,是不是这样的写法是错的?
返回一个String
SubItems[x]
下标x=0代表俗称的第2列
for k := 0 to MyTeacherList.Count - 1 do
begin
n := TeaRecord.CourseName = Frm_Courses.LvCourse.Items[k].SubItems[1];
if n = true then break
else continue;
end;
MyTeacherList是一个存放指针列表,TeaRecord是新加进列表的信息,这里主要是新信息与列表上的信息进行对比,如果新信息在列表中已经存在,则不加入,否则加入。而CourseName对应列表中的第二项。我不太清楚列是从哪项开始算的,所以SubItems[0]和[1]我都试过,还是说“列表索引越界(1)”,不过注明是"(1)"类型的,不知道是什么意思。
ListView 的SubItems的下标是从0开始的,你要注意这一点,
而且你没有必要按照下面的方法写
ListView.Items.Item[I].SubItems.Strings[j] //控制ListView的第I行的第j-1列
可以直接用ListView.Items[I].SubItems[j]这样写 //J表示第J+1列,而不是J-1列,因为ListView的第一列是用Caption 来访问的,不是用SubItems来访问的。
你注意了这个问题应当就没有什么问题了。