|
6 M9 h# T# n' I: v D& h! N
void __fastcall TForm1::FormCreate(TObject *Sender) V/ _5 S, v9 w! Q; |8 i4 X$ I4 q5 A V
{
4 s6 O0 p+ v. ]8 ]* ^% x$ C1 ACurrentDir=GetCurrentDir();
7 n* {4 s# y) p# K$ `& f8 tUpdateTreeView();
4 ]7 v8 K4 j; EUpdateListView(); # P# U! L2 O& `2 r3 F z
} + r/ l/ X" X1 j$ @/ R: X: p8 Z; c
//--------------------------------------------------------------------------- v$ G+ D0 d! v
void __fastcall TForm1::UpdateTreeView()
9 Z) t/ Z% C9 n& n, u{ 4 Q4 @2 }" P6 O" t; Z% L9 ^5 v
TTreeNode *rNode,*mNode; ' _, L9 ?- V# u! Q( M8 L
TreeView1->Items->Clear();
! V$ i* W5 l. J& A8 E' `rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); 1 R2 ~( l- s+ B" H
rNode->ImageIndex=1; 0 r( h$ i- W8 x5 `
rNode->SelectedIndex=1;
- V& Q, J8 f0 ?' a+ r& y: LmNode=TreeView1->Items->AddChild(rNode,"A:"); 0 O3 Z. Q$ M: ]' q9 f
mNode->ImageIndex=2; 7 {7 H) Y( ~$ W7 @3 [7 D5 U0 V
mNode->SelectedIndex=2;
( y0 Z6 U. x: p: DAddDirectory("A:",mNode);
' B+ p" p7 l" wfor(int i=1;i<DriveComboBox1->Items->Count;i++) 5 g+ N2 ^; y7 q- V G$ n
{ % k* k5 h" y" J3 z ~* j, A
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); % Q) e& `2 c+ S$ n3 M1 J
mNode->ImageIndex=3;
" B$ b, ^4 Z V0 EmNode->SelectedIndex=3;
6 w9 @* Q8 o' f5 rAddDirectory(AnsiString(char('B'+i))+":",mNode);
+ ~4 [0 ~/ R, z2 h/ O C} 2 o! W+ [ C; h1 z: g
}
! i% z1 M4 q. d3 {$ |1 [' h/ L" Z//------------------------------------------------------------------------ . r+ C- \$ E1 r) {: f: G( f
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) ; h4 e ` O" i; w2 N
{ 7 O2 W6 w& R0 ]" `0 {1 \1 o
TSearchRec sr;
6 I8 B* Q- D2 `TTreeNode *mNode; 3 b+ c/ i, v/ }7 x& n' s6 M/ u
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) , J o: h. W! F# k
{ ) [. W/ x' v4 l) a6 L; s% ^; A
if(sr.Attr==faDirectory)
- z; G- z0 b1 Q" F! d. F0 Z{ ' u* P( k$ N# \- o
if(sr.Name!="."&&sr.Name!="..")
! c5 \: \5 E- p4 h5 Q! N2 M6 d{
+ G: y* j$ g9 e5 ?! dmNode=TreeView1->Items->AddChild(fNode,sr.Name);
( J2 b6 e- K! f3 h) qmNode->ImageIndex=0;
; H Q/ X x. s4 U/ ]* CmNode->SelectedIndex=4;
' t) w7 | V# l9 Y& B# P// AddDirectory(path+"\\"+sr.Name,mNode); 9 G, _, F7 ?$ {, S5 j5 l
} " b) U) n/ e1 N5 m/ g7 A
} 6 S) f' l2 B8 ~+ k; ~0 O7 E8 R' |
}
5 z& A, y: q* Twhile(FindNext(sr)==0) ! A, q4 J% {6 x- r. J& y. u$ ~( w0 I
{
. z% C+ M. M5 V% @5 Dif(sr.Attr==faDirectory)
9 M H3 w% S! a' W' S, \' v{
' J: ]! p3 O- }/ h4 kif(sr.Name!="."&&sr.Name!="..") $ @1 V% M7 Q `, e) p% E4 u
{ 4 k# w) ]4 z, O5 m+ o
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
8 V) r2 D& l1 j8 wmNode->ImageIndex=0;
" r& h- i n, z, J- M+ {# C& A$ ^mNode->SelectedIndex=4; * N! V+ K! t4 ^5 D' j9 H& |
// AddDirectory(path+"\\"+sr.Name,mNode); # l# f2 g& I( i4 Z# x, ^' C: `
}
2 a1 r2 Y, ]( @# ~) ~}
6 A) m+ A* k, S- _+ z5 Y} 5 [& P& u/ y2 @" w
FindClose(sr);
$ F. u0 v, Y, O2 j} 8 J8 ~" a' I& O" X
//-------------------------------------------------------------------- , g7 o4 i3 U& ?) n, L2 v/ x
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
& i, H* k' u0 `& ]: K. xbool &AllowChange) " a: R; N7 v9 T* S% `0 F2 c
{ % G+ F" P; d: n
Screen->Cursor=crHourGlass; 6 R ^/ e% [* ^( o/ }+ @
TSearchRec sr;
6 E5 @* }) |4 i* i3 ?4 ~* R: KTTreeNode *NodeTmp=Node; , w6 @. L# n" z' b, V: m* q5 t; j9 [
AnsiString DirName,DirTmp;
6 H# I! l0 h# aDirName=Node->Text; & Y6 ]0 D% d2 D. B( t7 n& y
for(int i=Node->Level;i>1;i--) + W& u" O+ b: y) G. n+ j
{
2 ]" D$ O6 }+ u. z( g% INodeTmp=NodeTmp-> arent;
4 g) |5 h$ s2 q1 ^& tDirTmp=NodeTmp->Text; 6 _' a. O" K* }. S0 o
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
' Z U9 P" q! e0 ^DirTmp+="\\";
1 @) T1 C! D J$ q+ h4 g: u% sDirName.Insert(DirTmp,0); - E8 y$ V1 C0 i7 y& T8 _
}
* N9 ]7 N( Q9 Aif(DirName.SubString(DirName.Length(),1)!="\\") 7 c! B! k+ U) `( T
DirName+="\\";
4 m) s, ^4 ~- sfor(int j=0;j<Node->Count;j++)
# ?1 I% l: h+ b+ T0 Y+ m7 \{
8 N4 N$ |: w% Z. d3 T5 k+ L# }if(Node->Item[j]->Count==0); 1 y' ~5 e4 m" ~: Z) A
{
& z( O, c \4 [1 g9 i* \2 Uif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
$ {4 [# v( }: o! c4 c8 K+ A C{
- O0 z3 f2 k0 `do & m: P9 B- A/ P n
{
- d/ J# \/ N" R1 ]//Node->Item[j]->ImageIndex=5; ( c- c; v H7 ]; x* V( I, n2 s) p6 Q
//Node->Item[j]->SelectedIndex=4; ; H$ M, A$ e& y P
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
6 U5 B- X Y8 y{ / v' K: Y( C4 W6 I- v
Node->Item[j]->ImageIndex=0;
/ t. Z; N% H: t8 L" V: q4 lNode->Item[j]->SelectedIndex=4;
! {6 v5 x& S2 L) m' f- Y8 fTreeView1->Items->AddChild(Node->Item[j],sr.Name); : h+ [1 y* f1 P0 B% x
}
( l$ B7 |( f+ a. ]; t* Z} ! @/ B N# ]9 k9 B9 }7 z e
while (FindNext(sr)==0); . {, j+ Q7 S" r' |% O; ^+ I& e
FindClose(sr);
. u, b0 h/ B/ D1 B1 U, o} . b6 g$ q. J- X7 v0 u4 ]% {
} 0 f2 ` t' u- u& G u
}
& {0 X0 b- E9 K) g0 O8 EScreen->Cursor=crDefault; % y0 w. a: f$ x/ r# _; W
} |