我想向listview的第j行第5列写内容
例如
listview1.items.Item[j].SubItems[4]:=edit1.text;
结果报错“list index out of bounds[4]”
问题出在哪?
listview能不能想任意指定的行和列写入内容呢?

解决方案 »

  1.   

    每个 Item的 SubItems其实是一个 TStrings 类型。
    你的SubItems[4] 是相当于给 TStrings的第5行赋值。但问题是在赋值前你的 TStrings 的长度要>=5.
    否则就会提示 索引不存在的错误。
    你给 ListView 设置了列,并不代表已经给每行的 TStrings 添加值了。
    所以在第一次使用的时候要用listview1.items.Item[j].SubItems.add
    以后就可以象你这样用了。
      

  2.   

    第一列是Caption, 第二列是subitem[0]......第五列是subitem[3]
      

  3.   

    就像1楼说的,要逐行添加  with ListView1.Items.Add do
      begin
        Caption:= '';
        SubItems.Add('');
        SubItems.Add('');
        SubItems.Add('');
        SubItems.Add(Edit1.Text);    //第5列
      end;
      

  4.   

    楼上都回复的差不多了..
    如果楼主不显示图片, 不要求排序和  checkbox的话  真不如 stringgrid方便.