我本想定位改动listview某行某列的数据,或定位给某行某列插入内容,结果使用了
listview1.items.item[i].subitems.strings[i]:='123';
可是就是不行,运行就有错误,编译倒还能过去,但是在当时写的时,到subitems的时候就不会再索引属性出来了,strings是我加上去的,大家能帮我看一看到底是什么原因吗,我是用空的程序测试的,就是一个listview和button控件,一行代码:listview1.items.item[2].subitems.strings[2]:='123';同时提示一下,不是越界错误,我有加了足够的items项。

解决方案 »

  1.   

    知道你的错误在哪里,
    listview1.items.item[i].subitems是一个Tstrings类型,你必须先用
    Tstringlist.add() 加入串,
    之后才能用listview1.items.item[i].subitems.string[i]读取值或修改
      

  2.   

    listview1.items.item[i].subitems[i] := '123'
      

  3.   

    listview1.items[i].subitems[i] := '123'
      

  4.   

    // 这样写在你程序里有错吗?
    for j := 0 to Listview1.Items.count - 1 do
      for i := 0 to ListView1.Columns.Count - 2 do
        Listview1.Items[j].SubItems.Add('123');
      

  5.   

    haowanle讲的有一点对,可能就是数据类型不行,但是应当怎样的写能,我现在主要是定位行列写入数据,我就是listview1.items.item[2].caption:='123'也在提示这样错误:“Access violation at address 00434B3C inmodule 'project1.exe',read of address 00000024.”
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     i,j:integer;
    begin
    i:=3;
    j:=5;
    for i:=0 to i-1 do
    begin
    listview1.Items.Add.Caption:='';
    end;
    with listview1.Items.Add do
    begin
      caption:='';
      subitems.Add('');
      subitems.Add('');
      subitems.Add('');
      subitems.Add('hello is me');
    end;
    end;
      

  7.   

    我测试了一下ldb8848朋友的效果,只是添加可以,但也不能指定行,只能是在数据的后面退3个空行再加到第四行指定的位,也没有在表中定位,我现在要在表中定位修改,也就是讲我要修改第2行第3列那个空格中的内容,同时又不能动或影响其它地方的内容,不知道listview能不能实现
      

  8.   

    listview添加似乎要在第几行添加就要add到第几行,
    你可以根据你添加的位置,先检查所要实现的行是否大于item.count,是则一直添加到要实现的行
    如果是原先存在的行则
    listview1.items[i].SubItems.Strings[j] := '123'
    否则为with listview1.Items.Add do
    begin
      caption:='';
      subitems.Add('');
      subitems.Add('');
      subitems.Add('');
      subitems.Add('hello is me');
    end;
    不知对不对^-^
      

  9.   

    好像还是不行,应当是可以定位的,但是不知怎样的实现,同时网上也找不到,只有一个例子来定位,就是listview1.items[i].SubItems.Strings[j] ,但又没有详细的介绍,如要只是这样,在程序中又无法实现,网上的说明还有一些隐着的东西没有讲出来
      

  10.   

    这样呢
    listview1.Items[i].SubItems[j]:='555';
      

  11.   

    不行,就是出现我提到的错误,算法是没有错的,只是不知这个冲突和错误是怎样来的,和怎样的改正
    Access violation at address 00434B3C inmodule 'project1.exe',read of address 00000024.”
      

  12.   

    delphi是多少版本的,
    有没有可能是同一事件中的其他代码错误?