TcxTreeList 我定义了4个列。
第一列式隐藏的。显示ID
第二列显示名称
第三列是隐藏的保存图片在imagelist 里的ID
第四列显示图片 。 把 properties 属性我设置成了image . 想要在这列里显示 图片。 
手动往里面写数据。 可是图片就是显示不出来。下面是我的代码。 我如何更改 ?
图片时从imagelist 里面读出来的 。 每个语句后面我都加了一些注释。   CategoryInfoGrid.Clear;  //CategoryInfoGrid 是TcxTreeList 列表
  CategoryInfoList := TaskXML.GetAllCategory;  //获得所有的显示数据。 CategoryInfoList  是一个结构数组
  for i := low(CategoryInfoList) to high(CategoryInfoList) do
  begin
    CategoryInfoNode := CategoryInfoGrid.Add; 
    CategoryInfoNode.Values[0] := CategoryInfoList[i].ID;  //ID 
    CategoryInfoNode.Values[1] := CategoryInfoList[i].Name;  //名字
    CategoryInfoNode.Values[2] := CategoryInfoList[i].IconID;  // 图片在imagelist 里的的ID
    //根据ID 获得BMP
    CategoryBMP := TBitmap.Create;
    if FrmMainForm.ImgListCateGory.GetBitmap(CategoryInfoList[i].IconID,CategoryBMP) then
    begin
     GraphStream := TMemoryStream.Create;
     CategoryBMP.SaveToStream(GraphStream);
     StrFunc.StreamToVariant(GraphStream, GraphVariant);
     CategoryInfoNode.values[3] :=  GraphVariant;
    end;
   end;procedure TStrFunc.StreamToVariant(Stream: TMemoryStream; var v: OleVariant);
var
  p : pointer;
begin
  v := VarArrayCreate ([0, Stream.Size - 1], varByte);
  p := VarArrayLock (v);
  Stream.Position := 0;
  Stream.Read (p^, Stream.Size);
  VarArrayUnlock (v);
end;图片就是显示不出来。 哪位高人能够指点一下。 谢谢了。 

解决方案 »

  1.   

    不是variant类型匹配了就会显示图片,variant类型仅仅包含基本的数据类型,并不包括TBitmap或者是TGraphic等类似类型。
    我认为你应该换一下思路,转换成具体的picture格式。
      

  2.   

    问题已经解决。 和大家分享一下列类型还是image . 
    建立一个tcximage 的对象。然后把图片加载进去。 
    这个对象有一个属性。tcximage.editvalue 。 直接就把图片用variant输出。 
    node.value[imagecolumnindex] := tcximage.editvalue . 
    就可以了