我做的是一个资源管理器,下面的代码是资源管理器右边的listview的点击事件的代码,程序运行后,当第一次点击listview中的项的时候,能够将它的子项添加到listview中去,当再点击它的子项时要不就是报错要不就是没反应,而且本来是文件夹的它搞成了文件,是文件的它却搞成了文件夹。。我测试了下,原本通过data属性绑定在它的子项上面的路径与其他的项全部混淆,就是A的路径到B的上面去了,B的到C的上面去了。大家帮忙看看。。!procedure TForm1.lv1Click(Sender: TObject);
type
  pp=^string;
var
  litem:TListItem;
  path:string;
  list1: TStrings;
  list2: TStrings;
  I: Integer;
  ss:pp;
  subpath:string;
begin
     if(lv1.Selected<>nil) then
      begin
      litem:=lv1.Selected;
        path:=pp(litem.Data)^;
        ShowMessage(path);
        if(lv1.Selected.ImageIndex=3) then   {如果是文件夹}
        begin
          list1:=TStringList.Create;
        list2:=TStringList.Create;        list1:=getfile(path);
        list2:=getsubdir(path);        lv1.Clear;
         for I := 0 to list2.Count-1 do  {添加文件夹}
          begin
          subpath:=path+list1[i]+'\';
          litem:=lv1.Items.Add;
          litem.ImageIndex:=3;
          litem.Caption:=list2[i];
          new(ss);
          ss^:=subpath;
          litem.Data:=ss;
          end;
        for I :=0 to list1.count-1 do   {添加文件}
        begin
          subpath:=path+list1[i]+'\';
          litem:=lv1.Items.Add;
          litem.ImageIndex:=5;
          litem.Caption:=list1[i];
          new(ss);
          ss^:=subpath;
          litem.Data:=ss;
        end;        Dispose(litem.Data);
        list1.Clear;
        list2.Clear;        end;    end;
end;
----------------------------------------------