TreeView1现在目录显示的是ImageIndex:=1这个图标,怎么让它打开后目录变成第二个图标?
另外,要如何获得选中目录的节点?procedure TForm1.GetDirectories(Tree: TTreeView; Directory: string;
  Item: TTreeNode; IncludeFiles: Boolean);
var
  SearchRec: TSearchRec;
  ItemTemp: TTreeNode;
begin
  TreeView1.Items.BeginUpdate;
  if Directory[Length(Directory)] <> '\' then
    Directory := Directory + '\';
  if FindFirst(Directory + '*.*' , faDirectory, SearchRec) = 0 then
  begin
    repeat
      if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
      begin
        if (SearchRec.Attr and faDirectory > 0) then
        Item := Tree.Items.AddChild(Item, SearchRec.Name);
        ItemTemp := Item.Parent;
        GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
        Item := ItemTemp;
      end
      else
      if IncludeFiles then
      if SearchRec.Name[1] <> '.' then
        Tree.Items.AddChild(Item, SearchRec.Name).ImageIndex:=1;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
    TreeView1.Items.EndUpdate;
  end;
end;

解决方案 »

  1.   

    第一个问题自己搞定了,在OnChange事件里面写代码第二个问题谁能帮忙解决下,不知道怎么获得选中的节点超级菜鸟,要笑就笑,呵呵
      

  2.   

    问题一, 建议写成这样:     if SearchRec.Name[1] <> '.' then
         begin
            with Tree.Items.AddChild(Item, SearchRec.Name) do
            begin
              ImageIndex := 1;
              SelectedIndex := 2;     //注: ImageList中应该有两个图标, 编号分别是1和2
            end;
         end;
      

  3.   

    问题二: OnChange事件中的Node参数, 就是当前选中的节点。
      

  4.   

    TreeView.Selected就是选中的节点
      

  5.   

    我这个是哪里有错,只能复制到根目录
    procedure TForm1.mycopyfile(sourcef, targetf: string);
    var
          FromF,   ToF:   file;
          NumRead,   NumWritten:   Integer;
          Buf:   array[1..2048]   of   Char;
          n:integer;
      begin
            AssignFile(FromF,   sourcef);
            Reset(FromF,   1); {Record size = 1}
            AssignFile(ToF,targetf); { Open   output   file   }
            Rewrite(ToF,   1); {   Record   size   =   1   }
            n:=0;
            repeat
                      BlockRead(FromF,   Buf,   SizeOf(Buf),   NumRead);
                      sProgressBar1.Max:= 100;
                      label10.caption:=IntToStr(sizeof(buf)*n*100   div   FileSize(FromF))+'%';
                      sProgressBar1.Position:=sizeof(buf)*n*100   div   FileSize(FromF);//+'100%';
                      application.ProcessMessages;
                      //显示进度
                      BlockWrite(ToF,   Buf,   NumRead,   NumWritten);
                      inc(n);
              until   (NumRead   =   0)   or   (NumWritten   <>   NumRead);
              //Label5.Caption:='100%';
              CloseFile(FromF);
              CloseFile(ToF);
    end;