关于文件遍历并且显示在treeview中的一些问题,有代码(30分)

  • 主题发起人 主题发起人 guoxp
  • 开始时间 开始时间
G

guoxp

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己写了一个想列示出一个文件夹下的所有目录以及其子目录的过程,想把这些目录与它下面的子目录能类似windows浏览器
那样层层对应出来(我不想用Delphi 6的那个控件),这里我用了递归调用,我知道在这里出错了,但是不知道该怎么改,请大家
看看这些代码:
procedure tform1.searchDir(path,my_treenode: string);{path中要有'/' }
var
sr: tsearchRec;
found,i: integer;
mynode_1: Ttreenode;
my_subdir: Tstrings;
treenode,tempnode: array of Ttreenode;
begin
mynode_1:=Treeview1.items.add(treeview1.topitem,my_treenode);//treeview控件里的顶层,这里可能是
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;出错的原因之一

my_subdir:=Tstringlist.Create;

//这里的处理到第一个 while循环是为了提取当前目录的所有下级目录
found:=findfirst(path+'*.*',faDirectory,sr);
if found=0 then
begin
; if (sr.Attr=faDirectory) and (sr.Name<>'..') and (sr.name<>'.') then
; ;my_subdir.Add(sr.Name);

; while (findnext(sr)=0) do
; begin
; ;if (sr.Attr=faDirectory) and (sr.Name<>'..') and (sr.name<>'.') then
; ; my_subdir.Add(sr.Name);
; end;
end;

//用循环把目录、子目录一一对应的写到treeview里去
setlength(treenode,my_subdir.Count);
setlength(tempnode,my_subdir.Count);

; for i:=0 to my_subdir.Count-1 do
; begin

; ; treenode:=treeview1.items.addchild(mynode_1,my_subDir.Strings);
错误可能出在上句中的addchild中的mynode_1,这样我就不能正确的显示我想要的结果了,我想过替代,但是
不知道该怎么做

; ; //mynode_1:=treenode;
; ; //treenode:=treeview1.items.addchild(treenode,my_subDir.Strings);
; ; //searchDir(path+my_subdir.Strings+'/',my_subdir.strings);这里是想递归了,然而却难以避免
上面的错误,我想在这里能把这次递归的结果显示到相应的treenode下层,请高手指点一下
; end;

findclose(sr);
my_subdir.Free;
end;
 
呵呵,主要还有一个问题是图标。
 
我目前只是想解决这个问题的正确显示问题,即根节点mynode_1带来的问题,图标的问题我自己
都没有想过呢:)
拜托各位高手给看看好不好?
 
谢谢诸位的阅读,这个问题小弟已经自己解决了,我放弃了这个函数里的for循环过程和stringlist
类型数据的使用,而是直接在while循环部分找到目录后就深入该目录,并且把相应的目录添加到
treeview里,这样的话,函数就需要传递几个treenode参数。
另外,关于图标的问题:在treeview.iamges里把这个属性设为一个iamgelist(自己放一个iamgelist控件)
,然后在对应的节点,比如mynode_1.iamgeindex:=1;//1是imagelist里面图标的索引号。
这样就可以动态的产生图标了
可以自己个自己分吗?呵呵:)
 
后退
顶部