|
0 C% [" T& E' e5 t6 H" x; yvoid __fastcall TForm1::FormCreate(TObject *Sender) * ^* b1 L! W& g, N- C0 x/ d( a3 f/ Z& g
{
' r3 {, u/ M% \2 L \+ H1 [ N, rCurrentDir=GetCurrentDir(); " z; q, { o7 F
UpdateTreeView(); & O" ]% f' D: U n0 t7 c$ d% F1 N
UpdateListView();
: B) H- e( G$ P( A$ @} 0 f% T: z- J7 i ?
//--------------------------------------------------------------------------- ( C, x5 Q; @( D1 F+ ~
void __fastcall TForm1::UpdateTreeView() " Z$ N6 f5 w9 |4 ]3 f: N: j# g, H9 S
{ ; c* m8 y ?# i
TTreeNode *rNode,*mNode;
- Q! v9 f- i+ |/ `- v& tTreeView1->Items->Clear(); . u0 t: ]% q. S: [; t9 f: b- X4 p
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
: Y3 s0 p1 v G; @; K j9 erNode->ImageIndex=1;
8 X4 q8 j& P$ ?: i0 {rNode->SelectedIndex=1;
% N2 z8 O+ e4 }( k$ Z1 cmNode=TreeView1->Items->AddChild(rNode,"A:"); 9 u% d+ W( c6 d) i- a
mNode->ImageIndex=2;
3 T( B" }5 k1 A) VmNode->SelectedIndex=2; ) O) S$ U9 m4 q- I$ `( r
AddDirectory("A:",mNode);
! E1 z8 f4 p* p( L* ` j$ Cfor(int i=1;i<DriveComboBox1->Items->Count;i++)
6 r k/ J4 k7 H9 y: J9 z{
/ _# ` J @, C3 u' v; S4 BmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); $ M( a) L( b3 L7 e# Q
mNode->ImageIndex=3; w( K2 M1 Y: J1 V3 a
mNode->SelectedIndex=3; / \1 ? M4 V" r f% {6 p# p
AddDirectory(AnsiString(char('B'+i))+":",mNode); " n8 A: u; n* C$ H/ c
}
0 W) H4 m5 h B3 o} ! N: b' c4 N/ X9 n+ ^
//------------------------------------------------------------------------ 5 i" F s F7 b& Q( a$ C8 F
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
8 P' E: P( y% G+ ]{ ; m! u& Z0 ^; M( k1 t. u
TSearchRec sr; ) x5 u l. V/ y
TTreeNode *mNode;
& u6 I! V4 h z3 g, oif(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
/ k* ^( k( s& {2 _8 M4 K$ E; K{ e1 n2 K% P# E9 x8 ~
if(sr.Attr==faDirectory) - S" r$ g1 h" i" Q3 a. ?: @/ L
{ 7 r9 u, y# ~+ y3 H3 o% |
if(sr.Name!="."&&sr.Name!="..") ; x: Q, M. A2 h
{
" h8 i% s! Z( s4 ]0 y5 @5 _mNode=TreeView1->Items->AddChild(fNode,sr.Name);
8 j- g( d& M3 q8 @# \& X- HmNode->ImageIndex=0;
1 B7 `$ w+ G6 f; |- b7 [9 v* tmNode->SelectedIndex=4;
: f% F3 P( G% p/ ^// AddDirectory(path+"\\"+sr.Name,mNode); ( ?8 z7 W; E4 {: B3 z# }# A
} ) T$ h; r/ X% W6 l/ M' N' Z+ v! }
}
# J: Z, g$ Y3 U}
4 h/ w/ \/ ]; I% F# Vwhile(FindNext(sr)==0) # y& ~- t, @- d9 S5 V
{ % s: x- {6 O- i, `' ^. u
if(sr.Attr==faDirectory) " b3 d8 m4 z/ ?* R4 Y7 ^6 V/ q/ c
{ 5 u# _5 I! v# C2 L. u" u
if(sr.Name!="."&&sr.Name!="..") 9 z' q; n: L2 n
{
: Y. a" {* r; cmNode=TreeView1->Items->AddChild(fNode,sr.Name); ; R4 z4 }! H3 G1 Y7 g, {$ C
mNode->ImageIndex=0; 9 [8 _8 ` y# z
mNode->SelectedIndex=4; 8 c' o3 j5 d" Z( k
// AddDirectory(path+"\\"+sr.Name,mNode); % }7 F. l6 ~0 B
} . U/ x% _4 r9 [6 `! d
} # S" N( q' p: |7 L$ y; M2 W
}
6 p: P: g" w1 S8 xFindClose(sr);
* {! J. o. t& Z- ?. `: `( q} / j* |. x; u- i
//-------------------------------------------------------------------- + F4 p1 x- J9 X+ i
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
- `2 i& d6 T+ d1 z3 r" \5 Q+ v6 Nbool &AllowChange) 0 h4 ?+ L4 W' E) n& l' J- j/ P. z
{
/ N* A% s, t, {5 {Screen->Cursor=crHourGlass; # {) |, l' S- [% O7 ^6 n6 e, d6 h
TSearchRec sr;
2 H t& I, `3 D* q2 k I1 STTreeNode *NodeTmp=Node; ) r5 f7 Y5 o% n( ?3 ]7 t
AnsiString DirName,DirTmp;
* x# M+ q2 ?8 W' G8 a$ h4 A9 Y1 K& C6 uDirName=Node->Text;
* N5 v. L" |4 }for(int i=Node->Level;i>1;i--)
1 u5 R/ R7 M$ [2 n/ L{ ' b4 x; l3 a. l( K0 e
NodeTmp=NodeTmp-> arent; . n$ H7 E" |$ U4 b% x1 z }2 z
DirTmp=NodeTmp->Text; 9 v. x$ N# a3 B! O
if(DirTmp.SubString(DirTmp.Length(),1)!="\\") # c q% i8 d Z8 n* R
DirTmp+="\\";
8 D0 v- p9 q6 XDirName.Insert(DirTmp,0);
@1 s' Z0 U, {+ D- I} ! g( t4 E. p; ~1 z+ V
if(DirName.SubString(DirName.Length(),1)!="\\")
; H$ S; X, \' tDirName+="\\";
: w1 A9 A8 @* j R7 ^for(int j=0;j<Node->Count;j++)
# ^3 e2 e( S O$ C5 m* I. E{
# Y8 t0 Y* Z7 k. q3 Eif(Node->Item[j]->Count==0);
( q/ S; G$ }# Q, f( D{
/ T- c1 J/ a/ W: t! W$ ]if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) * \7 a. U7 |: B" M
{
+ Z& W" w! I5 ^$ sdo
3 }5 {3 t8 }7 N. N" a/ ]{
" f# g" r6 {- Q" s# x& ^( _/ C//Node->Item[j]->ImageIndex=5; ! z0 {0 |% p) T
//Node->Item[j]->SelectedIndex=4; $ H7 j( U4 e0 q, [: m
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
& H% x1 x& r6 p m; d1 k; `{
1 U: ]5 [3 ^/ j; ?Node->Item[j]->ImageIndex=0; $ J: w* Q' @) n! w" ]
Node->Item[j]->SelectedIndex=4;
2 J! B1 S5 W+ LTreeView1->Items->AddChild(Node->Item[j],sr.Name); 8 }7 M/ Y; }% f! r; m
}
' N a/ v# \4 K( l, Y} W. i* i c4 G3 i& [) ~1 d
while (FindNext(sr)==0);
2 E* Y; z2 ?$ G" qFindClose(sr);
s- u7 C; Z) v) V. `+ \9 j}
- h& Q& e* S9 ^}
8 \4 `) I9 G) V" K# S/ F4 i! x}
- R6 Y* C/ p1 T& CScreen->Cursor=crDefault; 9 b- S5 w- O2 C
} |