求将C盘目录文件结构装载入Treeview控件的办法? ( 积分: 67 )

  • 主题发起人 主题发起人 ynduanlian
  • 开始时间 开始时间
Y

ynduanlian

Unregistered / Unconfirmed
GUEST, unregistred user!
求将C盘目录文件结构装载入Treeview控件的办法?
 
求将C盘目录文件结构装载入Treeview控件的办法?
 
procedure TForm1.GetDirectories(Tree: TTreeView
Directory: string
Item: TTreeNode
IncludeFiles: Boolean);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
Tree.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);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
Tree.Items.EndUpdate;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Node: TTreeNode;
Path: string;
Dir: string;
begin
Dir := 'c:/temp';
Screen.Cursor := crHourGlass;
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;
GetDirectories(TreeView1, Dir, nil, True);
finally
Screen.Cursor := crDefault;
TreeView1.Items.EndUpdate;
end;
end;
 
感谢楼上的,但如果这样,碰盘很大时可能很慢,我的想法是:能否先加载最底一层,但能其分出目录(可以进一步展开的Node)和文件(不能进一步展开的Node),用户点击目录时再进一步展开……
 
我最想知道的就是,如何当一个节点是目录时,让他表示为可展开的,但并不真实加载入其子节点,而一个节点是文件时,表示为不可展开的?
 
你把程序中间这段
GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
注释掉
 
你可以在节点imageindex上做文章
或者

procedure TForm1.Button1Click(Sender: TObject);
var
D: PChar;
begin
D := 'C:/*.*';
SendMessage(ListBox1.Handle,
LB_DIR,
DDL_ARCHIVE +
DDL_DIRECTORY +
DDL_DRIVES +
DDL_EXCLUSIVE +
DDL_HIDDEN +
DDL_READONLY +
DDL_READWRITE +
DDL_SYSTEM,
Integer(D));
end;

然后载入treeview
 
可以在TreeNode.Data里面附加判断标志。
处理大的树可以先加载至第二层目录,剩下的采用多线程在后台进行。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
816
DelphiTeacher的专栏
D
D
回复
0
查看
761
DelphiTeacher的专栏
D
D
回复
0
查看
712
DelphiTeacher的专栏
D
后退
顶部