listview一般都是同一个图标。程序需要,我要把新增的数据而且与原来不同的数据显示不同的图标。数据的判断已经完成,但是图标不知道怎么实现?求救啊

解决方案 »

  1.   

    希望以下代码对你有所帮助
    function Tfrmexe.clvexe(path,byname:string):boolean; //增加文件名和图标,并存放文件的路径,
    var
    Icon_h: hIcon;
    Icon: TIcon;
    s:PString;
    begin
    new(s);  //申请空间
    result:=false;
    try
    s^:= path;  //存放这个数据
    Icon := TIcon.Create;   //创建一个存放图标的ICon
    Icon.Handle := Get_ShellInfo(path ,false).hIcon;//得到文件的图标
    listview1.Items.Add.Caption :=byname;//listview1新增文件名
    if icon.Empty then
      listview1.Items.Item[listview1.Items.Count-1].ImageIndex :=0   //对应文件名的图标\
    else
      begin
       ImageList1.AddIcon (Icon); //把图标存放到imagelist1
       listview1.Items.Item[listview1.Items.Count-1].ImageIndex :=ImageList1.Count-1;   //对应文件名的图标\
     end;
    listview1.Items.Item[listview1.Items.Count-1].Data :=s;  //指向这个前地址
    result:=true;
    except
    messagedlg('文件破坏不能载入',mterror,[mbok],0);
    end;
    end;
      

  2.   

    OnGetImageIndex事件里自己写好了,