我在物料类别设置的时候,想把类别名称和类别编号都保存在treeview中。
但是treeview只显示类别名称,即,利用items的text属性保存类别名称
由于增加子类别的时候需要用到类别编号,所以必须把类别编号也保存下来,所以想到了利用data属性,但又不知道该怎么用望高手指教

解决方案 »

  1.   

    定义一个结构体,保存你想要的数据:
    pMaterialType = ^TMaterialType;
    TMaterialType = record
      FType: string;
    end;添加时:
    var
      pType: pMaterialType;begin
      ....
      new(pType);
      pType.FType:= 'XXXX';  with TreeView1.Items.Add do
      begin
        Text:= '名称';
        Data:= pType;
      end;  ...
    使用时:  pMatrialType(TreeView1.Items.Item[intIndex].Data).FType;记得在销毁是要释放内存:
      Dispose(TreeView1.Items.Item[intIndex].Data);
      

  2.   

    DATA通常用来保存32为指针或整数。楼上使用指针,有几点需要注意。
    1.数据结构内部尽量使用固定大小字段,如
     pMaterialType   =   ^TMaterialType; 
     TMaterialType   =   record 
        FType:   string[63]; 
     end;
     提高效率,减少动态内存错误。
    2.既然是指针,必须注意内存分配和销毁。
    3.对DATA的使用使用强制类型转化,并注意指针运算。
      pMatrialType(TreeView1.Items.Item[intIndex].Data)^.FType;