韩冰 发表于 2005-1-26 12:30

用TreeView浏览目录

<P>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
CurrentDir=GetCurrentDir();
UpdateTreeView();
UpdateListView(); </P>
<P>}
//---------------------------------------------------------------------------
void __fastcall TForm1::UpdateTreeView()
{
TTreeNode *rNode,*mNode;
TreeView1-&gt;Items-&gt;Clear();
rNode=TreeView1-&gt;Items-&gt;Add(TreeView1-&gt;Selected,"我的电脑");
rNode-&gt;ImageIndex=1;
rNode-&gt;SelectedIndex=1;
mNode=TreeView1-&gt;Items-&gt;AddChild(rNode,"A:");
mNode-&gt;ImageIndex=2;
mNode-&gt;SelectedIndex=2;
AddDirectory("A:",mNode);
for(int i=1;i&lt;DriveComboBox1-&gt;Items-&gt;Count;i++)
{
mNode=TreeView1-&gt;Items-&gt;AddChild(rNode,AnsiString(char('B'+i))+":");
mNode-&gt;ImageIndex=3;
mNode-&gt;SelectedIndex=3;
AddDirectory(AnsiString(char('B'+i))+":",mNode);
}
}
//------------------------------------------------------------------------
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
{
TSearchRec sr;
TTreeNode *mNode;
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
{
if(sr.Attr==faDirectory)
{
if(sr.Name!="."&amp;&amp;sr.Name!="..")
{
mNode=TreeView1-&gt;Items-&gt;AddChild(fNode,sr.Name);
mNode-&gt;ImageIndex=0;
mNode-&gt;SelectedIndex=4;
// AddDirectory(path+"<a>\\"+sr.Name,mNode</A>);
}
}
}
while(FindNext(sr)==0)
{
if(sr.Attr==faDirectory)
{
if(sr.Name!="."&amp;&amp;sr.Name!="..")
{
mNode=TreeView1-&gt;Items-&gt;AddChild(fNode,sr.Name);
mNode-&gt;ImageIndex=0;
mNode-&gt;SelectedIndex=4;
// AddDirectory(path+"<a>\\"+sr.Name,mNode</A>);
}
}
}
FindClose(sr);
} </P>
<P>//-------------------------------------------------------------------- </P>
<P>void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
bool &amp;AllowChange)
{
Screen-&gt;Cursor=crHourGlass;
TSearchRec sr;
TTreeNode *NodeTmp=Node;
AnsiString DirName,DirTmp;
DirName=Node-&gt;Text;
for(int i=Node-&gt;Level;i&gt;1;i--)
{
NodeTmp=NodeTmp-&gt;Parent;
DirTmp=NodeTmp-&gt;Text;
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
DirTmp+="\\";
DirName.Insert(DirTmp,0);
}
if(DirName.SubString(DirName.Length(),1)!="\\")
DirName+="\\";
for(int j=0;j&lt;Node-&gt;Count;j++)
{
if(Node-&gt;Item-&gt;Count==0);
{
if (FindFirst(DirName+Node-&gt;Item-&gt;Text+"\\*.*", faAnyFile, sr) == 0)
{
do
{
//Node-&gt;Item-&gt;ImageIndex=5;
//Node-&gt;Item-&gt;SelectedIndex=4;
if((sr.Attr&amp;faDirectory)&amp;&amp;sr.Name!="."&amp;&amp;sr.Name!="..")
{
Node-&gt;Item-&gt;ImageIndex=0;
Node-&gt;Item-&gt;SelectedIndex=4;
TreeView1-&gt;Items-&gt;AddChild(Node-&gt;Item,sr.Name);
}
}
while (FindNext(sr)==0);
FindClose(sr);
}
}
}
Screen-&gt;Cursor=crDefault;
} </P>
页: [1]
查看完整版本: 用TreeView浏览目录