|
! ?9 H9 V% [$ Q- |" o
void __fastcall TForm1::FormCreate(TObject *Sender) ) ^# |+ }- }- F1 j5 i
{
4 a3 d, o- y8 d; W4 S% J9 v- {% hCurrentDir=GetCurrentDir(); : K6 [, _: k: `! q& _+ [& N* @ N
UpdateTreeView(); 9 m' P: t, P4 z) [
UpdateListView();
G9 j* e" j0 g# ~# ?: n}
% R) `2 l" U7 p8 {//--------------------------------------------------------------------------- & i. i) F$ p0 ~+ S
void __fastcall TForm1::UpdateTreeView()
7 H: a {8 j: n, Y9 u# }{ 6 I" g' I% J1 M! P; i3 q3 b2 d
TTreeNode *rNode,*mNode; ( J$ G. ^- K0 n3 s2 L' A: |$ j
TreeView1->Items->Clear();
) D( K; p' H# W4 S/ W) ]& IrNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); 1 F$ Q' |9 Q4 H) x# y
rNode->ImageIndex=1;
: Y% {' N, ?3 W' CrNode->SelectedIndex=1;
9 [% O, G1 L' @mNode=TreeView1->Items->AddChild(rNode,"A:");
, N6 T& ?3 P9 i+ MmNode->ImageIndex=2;
; L7 ?; n. i; `" ^( I H8 G$ k TmNode->SelectedIndex=2;
j& m- ?6 U% H: y/ N8 JAddDirectory("A:",mNode); 3 d8 [8 A) ]6 E/ M! R7 U' f
for(int i=1;i<DriveComboBox1->Items->Count;i++)
- q' M0 P. @5 O" `& D{
: C' S& Z- i, V- S" y6 {1 z. JmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
& I( P# R r6 @6 l6 Y/ CmNode->ImageIndex=3;
8 p% h3 |) f! t5 X# G% FmNode->SelectedIndex=3; 3 c$ z. V5 U! T! A2 T8 }
AddDirectory(AnsiString(char('B'+i))+":",mNode); - @" ]; M1 F* X; h0 [5 K
} ; J: A) a& ?0 r% f- g
} : k* ^. M& J% k& r, }1 s3 G+ I
//------------------------------------------------------------------------
|% _# G0 p- h/ rvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
* n; \& g3 r% g$ k{
) O; d) ?0 P% I p! E: ~, U2 JTSearchRec sr;
) R, V8 t$ w+ K5 t6 R& Q7 Q. JTTreeNode *mNode; 0 O% g$ r9 _# Z
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) ( T9 O; q5 V0 S) t7 y \$ O5 v9 j
{
5 }9 V3 ?4 p2 {# k3 hif(sr.Attr==faDirectory)
% g# |+ D. _( l/ K8 Q/ W{ - r4 Y- j" h* y) N2 C( a3 X
if(sr.Name!="."&&sr.Name!="..") - E( S4 w# W8 @! ?% I
{ ) I6 Y$ x- B& k
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
% \. D! m7 D$ f4 W3 _5 _mNode->ImageIndex=0; 8 Q L7 d5 k, P* C0 Q$ X
mNode->SelectedIndex=4; * Y) M F. x+ f* d
// AddDirectory(path+"\\"+sr.Name,mNode); + i4 F5 E5 t0 W6 C) ^! \
}
3 A; m! ^5 k3 x: @, `8 y} " P, ~6 S+ D% N9 Q
}
; r) g" K; I3 J* t) E7 Bwhile(FindNext(sr)==0)
0 x+ \7 l: F: `2 q8 @; _" m) U: a{
: p* l' A, r" S2 S- a3 Tif(sr.Attr==faDirectory)
& } U7 S$ B O' ]3 m8 R4 o{ 1 K, z5 A. ?4 h. n- [& _9 t
if(sr.Name!="."&&sr.Name!="..")
. @& A) q. i5 y% _8 @. h{
. g+ r8 O" s$ [4 MmNode=TreeView1->Items->AddChild(fNode,sr.Name);
C3 c+ ^9 H" f: U0 TmNode->ImageIndex=0; ; _8 {; v( l O1 R- s
mNode->SelectedIndex=4; & s6 M" V; U* ]; b3 I5 I
// AddDirectory(path+"\\"+sr.Name,mNode); `( d- k, i+ f; S* f
} , O- O3 ^+ `) N9 x' R/ _
}
0 c2 K" Q I- ]; K/ n3 E} % H+ S! j: ]; u2 D( J# ^
FindClose(sr); 5 ~; a# @1 h; d' Y+ x& @3 [4 d
} * P' ?" ^' X" E7 Y$ \! z
//-------------------------------------------------------------------- # O- o. m. `+ h% P/ H) D; V+ s
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, " V$ J$ T2 }) q% {8 l$ [; z! z$ k
bool &AllowChange)
2 Y3 V7 e! c- U: E/ J6 d5 z{
1 P* j2 }8 i( J% XScreen->Cursor=crHourGlass;
5 c. X! a6 `! A) ^$ R: d! P2 b* MTSearchRec sr;
: J2 _& ~, D" q/ Z# F6 d8 { \TTreeNode *NodeTmp=Node;
: x' L6 v9 J4 eAnsiString DirName,DirTmp;
6 b: @% y; Z) B- P* n. RDirName=Node->Text;
) P- w) l9 L' c, R- ~. Nfor(int i=Node->Level;i>1;i--)
7 ?2 t G5 g; V* C, K4 z: ]{ + m% Z; }, N; s2 [5 n# s- b: c
NodeTmp=NodeTmp-> arent;
0 j. O! O* O4 U; g9 \, vDirTmp=NodeTmp->Text; 5 v- Y* z H+ [4 H
if(DirTmp.SubString(DirTmp.Length(),1)!="\\") 2 i" o5 j! W. d/ b
DirTmp+="\\";
) [5 |2 e4 K$ S& r0 QDirName.Insert(DirTmp,0);
4 y" n% w- E d; z}
% g. q V- u9 I6 o X# P" n6 k& r3 Gif(DirName.SubString(DirName.Length(),1)!="\\")
; q. Y2 W8 E* v8 D) E& pDirName+="\\";
9 n2 X1 K5 u3 J* wfor(int j=0;j<Node->Count;j++)
3 Z" @" h# d/ m- n# q( H; K! L4 ^{
: j3 m ^( k0 q) H3 ^' V% cif(Node->Item[j]->Count==0); . r/ G, _, q& ?4 C" o
{
9 {% m9 _& m- b: o1 Dif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
. A2 i6 @* W( W! i7 Y{ " J+ w: y( j7 R) B
do ; e! i U4 O6 a! j% V( u5 L
{ * ?4 [/ G$ g% C; G" k
//Node->Item[j]->ImageIndex=5;
" q5 \/ U2 K, X) W9 ^/ X9 d) x//Node->Item[j]->SelectedIndex=4; 6 f4 s5 \$ X1 `' V! e
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") & t* ?* F& T" N& p7 r; j
{ g# {7 P# a7 z8 M* l' P& K2 @
Node->Item[j]->ImageIndex=0;
8 ^, I+ L* x5 T1 j4 ]Node->Item[j]->SelectedIndex=4; . n$ D) k, y( g9 ~; x8 U- B
TreeView1->Items->AddChild(Node->Item[j],sr.Name);
0 E2 K1 p* l: ~2 e6 O}
* m& i% V3 ^1 u" f3 _, Y# u8 Z} * K' `" L k, w7 Q4 I
while (FindNext(sr)==0); 6 k% E( R7 ?: S6 r0 u
FindClose(sr);
& ^& p) }" U$ y4 X}
9 W# b1 I) a7 I- u9 e6 J+ \}
2 i- x" W. D+ y} , Z- S2 C9 h2 [7 y4 E+ I; ] \+ C
Screen->Cursor=crDefault; $ E0 t Z' a, t! j- r, d* f
} |