+ ?3 T3 _* G( N: L6 ~
void __fastcall TForm1::FormCreate(TObject *Sender) 4 t* l0 V) n0 |" T/ H& }; h' P
{
1 @- G- G# E$ i0 m# C, d ECurrentDir=GetCurrentDir(); 9 Y' ?; K0 {! a$ r4 J
UpdateTreeView(); ; F5 C0 H2 W h" D
UpdateListView();
3 }! }7 X' G% i& [, v: z} ' j0 i9 r# z4 s% K5 L
//--------------------------------------------------------------------------- $ L. n/ J- f1 a Q/ L5 U
void __fastcall TForm1::UpdateTreeView() % _3 X2 K( c" y
{ : U" P; Y. G* U, E
TTreeNode *rNode,*mNode;
* m# X* D, C3 y% t% KTreeView1->Items->Clear(); 2 M# v1 r* D$ N' v% D' e5 S& q
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
- k6 @' {) D& w( Z1 w( K) _" ZrNode->ImageIndex=1;
; y, Y" X1 i" I6 c8 h' l* trNode->SelectedIndex=1; # j& F, d8 x+ A' E) u# X" ]
mNode=TreeView1->Items->AddChild(rNode,"A:"); 8 V& H j# }2 M5 R6 t& b8 G% Z8 U
mNode->ImageIndex=2; % p }, s8 R8 h6 k. ? G F" b
mNode->SelectedIndex=2; # u- L3 r, i* ^- `+ Y' t
AddDirectory("A:",mNode); " k/ ]2 C: L) E w4 ~; n f
for(int i=1;i<DriveComboBox1->Items->Count;i++) & [4 O" |" p( W. r4 c
{ 4 t$ x {0 N2 H
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
) v9 a5 O ]0 N1 T0 U( a% R! FmNode->ImageIndex=3; ; h6 n) \: z' z) l3 }% Q+ g5 I
mNode->SelectedIndex=3;
( }% i9 y2 K u2 L4 wAddDirectory(AnsiString(char('B'+i))+":",mNode);
1 y% ^% X% ?+ f7 g4 O5 ?4 V}
5 X" b# ~2 U8 E}
7 y. e1 n3 R( H6 ?//------------------------------------------------------------------------
' i3 d8 o1 U$ l `void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) + F2 v2 t9 T' f; R; N7 p( E
{ $ a! V5 w: ~7 x
TSearchRec sr; ' q+ A% k9 j! ?6 R0 N( s; s! R
TTreeNode *mNode; 6 Q i$ j5 T3 q, N$ S g6 `
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
' r) o- a) \( U+ y% `: V5 V{
# b8 t6 `4 y( B# Oif(sr.Attr==faDirectory) 5 @1 N5 Z+ z! H1 R6 A
{
1 @% [% W. K' q* E- ]if(sr.Name!="."&&sr.Name!="..") 1 g( S0 O' [9 K1 B. d3 } ~" v
{ ' D7 w+ ?2 N/ L7 B( ~: ? a; e
mNode=TreeView1->Items->AddChild(fNode,sr.Name); 6 J) q" G0 h [* {
mNode->ImageIndex=0;
9 f c6 \) J# ~6 z8 J0 TmNode->SelectedIndex=4;
& @! L/ Q }, e+ I1 s! @// AddDirectory(path+"\\"+sr.Name,mNode); 2 l: g% F( c- B7 _ u: ~9 g
} : Z) U5 R/ Z( t/ C& g) i. z7 r
} ! N% K; o: E" ?# F" j$ V" k
} / @9 \9 J* d6 n) w1 k
while(FindNext(sr)==0) * H- U7 b6 v- x
{
7 ]% E4 S e" iif(sr.Attr==faDirectory) * T ]8 h5 C8 Z) l" ], ~
{
7 \- F' U( E; v2 Fif(sr.Name!="."&&sr.Name!="..") ! e9 }) d: v" L' d4 a& ^
{
. w1 i, g; Y- U3 Q" \. [mNode=TreeView1->Items->AddChild(fNode,sr.Name);
8 H4 k! S$ H6 D- [mNode->ImageIndex=0; " f) V2 a# C% d
mNode->SelectedIndex=4; # P0 Q; R0 [; N/ |) u
// AddDirectory(path+"\\"+sr.Name,mNode); 6 Z) n$ Q: Y' W/ D( B
}
% N# H4 m. Y0 E7 v} ' J7 E9 x7 y8 t0 ~7 G6 O+ ~
}
! s9 F4 s ]5 D$ V$ t+ DFindClose(sr);
% r) |% @. P9 d# v" j( ~3 Q3 `} ( A7 e3 S9 P$ V- I0 W
//-------------------------------------------------------------------- ; }+ j/ ~& t# e) Z
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, 1 j0 d! D/ l+ [- ]8 M% g8 G: N$ `
bool &AllowChange)
) {# h; C5 L5 r$ L! `9 [{ 3 E) Q }2 i$ u$ R. E8 K0 G; c
Screen->Cursor=crHourGlass;
; g4 T9 a( \* D$ K; R& O# mTSearchRec sr;
, g g% R8 M, J+ Q, @TTreeNode *NodeTmp=Node; 9 F8 l. a3 z1 v% S4 u+ Y
AnsiString DirName,DirTmp;
A* E( @% }, r% mDirName=Node->Text;
" a9 j3 ?8 i, _( c/ N9 i& n. wfor(int i=Node->Level;i>1;i--)
: x6 u2 \5 J" R8 C* x{ 2 u" P# l8 i& I: l6 S1 V
NodeTmp=NodeTmp->arent;
) ?4 W5 E3 ]: x. e/ Q. e4 E% MDirTmp=NodeTmp->Text;
/ |& S4 I% T" g3 r$ T% _( U' k3 uif(DirTmp.SubString(DirTmp.Length(),1)!="\\")
0 E$ _ Z! h/ a2 t8 VDirTmp+="\\"; 9 ~& L, u6 ?% R0 R4 w; z/ }
DirName.Insert(DirTmp,0);
j& n1 p$ l6 g! e9 x# k} 4 z& K- j+ O1 t- K- o) X( {- L
if(DirName.SubString(DirName.Length(),1)!="\\")
7 `4 w0 S' E! ]( Z+ zDirName+="\\"; ; O: m+ ?4 K+ O' v# z/ S
for(int j=0;j<Node->Count;j++) ' N2 N3 ~& |! e* x5 X. e/ M
{
4 t, q# Y4 z, Tif(Node->Item[j]->Count==0);
. u) \; I2 B' p( T- t{ 1 x+ }6 Q4 v8 v2 A& w! m
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) V! \! T% Z+ v" C. X3 E
{ 0 e0 l7 A$ l' N O
do
/ L1 a* n% D4 X& q. v! J{ % r) I6 [! {' N: B/ r2 z
//Node->Item[j]->ImageIndex=5; 7 v3 \9 e! h6 n) c( X4 F6 Z! S
//Node->Item[j]->SelectedIndex=4; ; k) H/ o/ l! }9 W
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
: W3 `5 U: `5 C* W{
# g4 p# T0 ~! K* |. ?Node->Item[j]->ImageIndex=0; / p! l0 M9 e; ~
Node->Item[j]->SelectedIndex=4; , U- T" G$ [3 `: q: ^
TreeView1->Items->AddChild(Node->Item[j],sr.Name);
7 x; U: F& U& ]' e6 ~! H}
( j) j4 x `8 f} 5 i O) o0 y+ v- B- `7 T+ l* i$ m
while (FindNext(sr)==0); / T7 G) _! q/ E N0 }! f
FindClose(sr);
A- X0 _ T( q}
# T8 t$ r, Q( d5 h} 9 e1 f% t' j# F+ l! o, N3 r9 u
}
( V \: }# s4 q5 Z; a# G* M& \5 zScreen->Cursor=crDefault;
7 Y) R) H9 U+ f% J} |