我提取某行某列的信息。
之前有人发过这种问题,我看了一下,
有人提出解决方案是:
ListView.Items.Item[I]  //控制ListView的第I行ListView.Items.Item[I].SubItems.Strings[j]  //控制ListView的第I行的第j-1列
我试了,可是编译时却出了列表索引越界的问题。这是怎么回事,是不是这样的写法是错的?

解决方案 »

  1.   

    TListView.Items[I].SubItems[J]
    返回一个String
      

  2.   

    没什么好注意的
    SubItems[x]
    下标x=0代表俗称的第2列
      

  3.   

    源代码如下:
    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)"类型的,不知道是什么意思。
      

  4.   

    比较LvCourse.Items.count和MyTeacherList.Count
      

  5.   

    代码没有错误,是你自己控制不准确。
    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来访问的。
    你注意了这个问题应当就没有什么问题了。