怎么存放呢?

解决方案 »

  1.   

    存放类的指针,因为data的类型是指针
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:test;
    begin
      a:=test.Create;
      a.a := '1';
      listview1.Items.Add.Data  := Pointer(a);
      ListView1.Items[0].Data := Pointer(a);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      b:test;
    begin
      b:=test.Create;
      b:= ListView1.Items[0].Data;
      ShowMessage(b.a);
    end;随便写了点
      

  3.   

    可以的,你的意思是存放对象吧。无论自定义的类对象还是什么都可以的,直接赋值就行,看下面例子
    procedure TForm1.FormCreate(Sender: TObject);
    var
      edt: TEdit;
      item:TListItem;
    begin
      edt:= TEdit.Create(Self);
      edt.Text := '123';
      item := lv1.Items.Add;
      item.Data := edt;
      item.Caption := edt.Text
    end;
    取的时候转化一下data就行。看下面例子
    procedure TForm1.btn1Click(Sender: TObject);
    var
      edt: TEdit;
    begin
      edt := TEdit(lv1.Items.Item[0].Data);
      ShowMessage(edt.Text);
    end;
    保存你自定义的类对象也行。
      

  4.   

    可以的,把你要存放的数据强制类型转换成Pointer即可
    在使用时,再转换成实际的类型就行了
      

  5.   

    item的data是指针,你可以用它保存,比如你有一个record的指针 Pxxx,可以将它保存到data中,然后读取时Pxxx(item.data).xxxx
      

  6.   

    可以的,而且也很实用,以下是之前写的相关代码,中间用到了循环,看看有没有参考的地方
    frmObjCYFKF.lvCYFKF.Items.Clear;
        frmObjCYFKF.lvCYFKF.Items.BeginUpdate;
        try
          qryFKF.First;
          while not qryFKF.Eof do
          begin
            tCYFKF := TT_CS_USER.Create;
            with tCYFKF do
            begin
              OID := qryFKF.FieldByName('OID').AsString;
              USERNAME := qryFKF.FieldByName('USERNAME').AsString;
              ACCOUNTNO  := qryFKF.FieldByName('ACCOUNTNO').AsString;
              LINKMAN := qryFKF.FieldByName('LINKMAN').AsString;
              PINYINCODE := qryFKF.FieldByName('PINYINCODE').AsString;
              OPENBANK := qryFKF.FieldByName('OPENBANK').AsString;
              PHONE := qryFKF.FieldByName('PHONE').AsString;
              CODE := qryFKF.FieldByName('CODE').AsString;
              ADDRESS := qryFKF.FieldByName('ADDRESS').AsString;
              NSRBM := qryFKF.FieldByName('NSRBM').AsString;
              KPD_ID := qryFKF.FieldByName('KPD_ID').AsString;
            end;        with frmObjCYFKF.lvCYFKF.Items.Add do
            begin
              Data := tCYFKF;
              Caption := tCYFKF.CODE;
              SubItems.Add(tCYFKF.USERNAME);
              SubItems.Add(tCYFKF.PINYINCODE);
              SubItems.Add(tCYFKF.OPENBANK);
              SubItems.Add(tCYFKF.ACCOUNTNO);
              SubItems.Add(tCYFKF.LINKMAN);
              SubItems.Add(tCYFKF.PHONE);
              SubItems.Add(tCYFKF.ADDRESS);
            end;        qryFKF.Next;
          end;    finally
          frmObjCYFKF.lvCYFKF.Items.EndUpdate;
        end;反向读取:
      if not Assigned(fcs_USER) then
        fcs_USER := TT_CS_USER.Create;  if not ((lvCYFKF.Selected = nil) or (lvCYFKF.Selected.Data = nil)) then
      begin
        with fcs_USER, lvCYFKF do
        begin
          OID := TT_CS_USER(Selected.Data).OID;
          USERNAME := TT_CS_USER(Selected.Data).USERNAME;
          ACCOUNTNO  := TT_CS_USER(Selected.Data).ACCOUNTNO;
          LINKMAN := TT_CS_USER(Selected.Data).LINKMAN;
          PINYINCODE := TT_CS_USER(Selected.Data).PINYINCODE;
          OPENBANK := TT_CS_USER(Selected.Data).OPENBANK;
          PHONE := TT_CS_USER(Selected.Data).PHONE;
          CODE := TT_CS_USER(Selected.Data).CODE;
          ADDRESS := TT_CS_USER(Selected.Data).ADDRESS;
          NSRBM := TT_CS_USER(Selected.Data).NSRBM;
        end;
      end
      else
        fcs_USER.CODE := '';