不要发两次呀,我回了一次,不知道你解决否?
类似
for i:= 0 to Table1.RecordCount - 1 do begin
  a := fields[3].asinteger;
  .......
  ListView1.Items.add;
  ListView1.Items[i].caption := fields[0].asstring;
  ListView1.Items[i].SubItems.Append(fields[1].asstring);
  .......
  ListView1.Items[i].Data := @a;
  .......
end;

解决方案 »

  1.   

    你又发了一次!
    单击Listview,将A 学号  B姓名 C年龄 D爱号  都加上,但将 A 学号 一栏的width变为0,数据还是照填写不误
    Item.SubItems.Add(Adodataset1.FieldByName('爱号').Value);
    假设填写的为3,则以后取ListView1.Items[3].Data 便行。
      

  2.   

    因为aa的地址不便,所以所有的Item.Data^全部指向一个相同的地址而这个地址只保留的最后一次符值的内容,如果不想改变算法,每次必须重新申请一个新地址。