|
* y5 s* [' n; B' I
void __fastcall TForm1::FormCreate(TObject *Sender) - C: F% ?; [9 \, D
{ O, ]) v. ~9 ]4 z) \( ]( u3 {3 p
CurrentDir=GetCurrentDir();
; i' @. _' O4 C) ^ b" dUpdateTreeView(); ' O; u4 ~3 Q, B, }7 M
UpdateListView(); - R! A8 E8 r; ]
} , V# j$ ]! X1 ^# F' s$ r
//--------------------------------------------------------------------------- 2 t5 B4 H% |: z1 p; b
void __fastcall TForm1::UpdateTreeView()
K5 `7 I$ v: `" ]+ d{
5 L. V! |# V' z: e }2 B2 Z& G# oTTreeNode *rNode,*mNode;
) S* O5 P/ q9 k8 \. r" XTreeView1->Items->Clear(); 1 n( r9 g! u% t/ E3 b, C
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); * ?2 _. @# h9 f7 @; y/ h$ |
rNode->ImageIndex=1; , h& P& E% H0 n+ B5 V" @
rNode->SelectedIndex=1; * \$ ~3 ^! D4 n5 `5 W
mNode=TreeView1->Items->AddChild(rNode,"A:");
" C5 B% ^/ v2 K: w8 m1 N( b2 ?0 VmNode->ImageIndex=2; 5 Z0 b( Z7 M6 k7 r5 i3 Z
mNode->SelectedIndex=2; 8 b6 K( w! z. d; d- @. m
AddDirectory("A:",mNode); ! l' n r8 \$ m5 V8 |( _
for(int i=1;i<DriveComboBox1->Items->Count;i++) , q( y7 g* [$ @1 i( R
{ ) X6 W+ M4 c9 K) g6 i6 S
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); ) I; [; s2 z7 b1 X
mNode->ImageIndex=3;
4 d; Y6 M4 ~; x& N" dmNode->SelectedIndex=3; : x) V0 z8 J/ A
AddDirectory(AnsiString(char('B'+i))+":",mNode);
" H) I3 ]# {4 ^5 O; o7 ~/ W}
8 p4 \) ^/ P" M8 _5 g3 a} 7 h7 G2 X* U6 d! ^& y
//------------------------------------------------------------------------
2 b- G2 y# W5 b; l! Nvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) & i( s5 w% H$ \& ^2 z; n t
{
( H) s$ \, J! B- v+ Y* n! ETSearchRec sr; ) U h* f5 K" d: y. x$ `2 m7 s" ^
TTreeNode *mNode; 3 C$ }, J4 I) C ]
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
0 b3 G5 v t1 f{ 5 H, }8 n, V3 |
if(sr.Attr==faDirectory)
: u' x3 l9 o' q* q) ?1 S{
, V# J/ \# j7 v2 w6 P. ~$ Oif(sr.Name!="."&&sr.Name!="..")
& h3 D* i: _" C{ / A ?5 p& U2 w
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
5 ?/ [) }. q6 G5 `, ]# qmNode->ImageIndex=0;
- [8 S0 R. Q+ B9 l4 C/ v. cmNode->SelectedIndex=4;
# V: |7 F: i x" V! Z# f: i+ u// AddDirectory(path+"\\"+sr.Name,mNode);
7 N/ a/ c* J. J+ P4 A- h}
/ V) e; p5 g( f! n$ {} - F/ d; l/ K6 @; w1 s3 o
}
" T! `, x( T, k# g- u3 G& swhile(FindNext(sr)==0) ; u6 R5 W+ [/ W( _+ e
{
; A. l% E8 z1 \. e- ~! bif(sr.Attr==faDirectory) ) ]' q) ?' V+ `6 c; h0 e4 ^, f
{ , ?3 x4 [3 u N5 W; d, P# h4 X- a
if(sr.Name!="."&&sr.Name!="..")
7 m; v) O: o; L7 p1 g" i* r{ , P- D5 a0 C Q8 X
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
: m. G$ C( C5 DmNode->ImageIndex=0;
0 e5 H- k2 _8 Q1 G: OmNode->SelectedIndex=4;
. @8 j/ e: ]- Q) d( Q( i/ v- k0 ]// AddDirectory(path+"\\"+sr.Name,mNode); 1 R }7 P- K- d: L6 M$ H3 i. U
}
2 d$ ~5 d, d t" h8 r) y9 u}
# }# s+ a3 D- B$ l}
+ {' k5 f' J+ t. a6 ?) j4 Y# }FindClose(sr); $ r! m1 O% z5 X" }% q
} : \0 |! o P1 g# V, W
//-------------------------------------------------------------------- 4 y/ e; B% S8 r$ E9 y- g2 z6 E
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, ; b( ]7 K8 l6 d" x" D
bool &AllowChange)
/ J) `; z1 o) i. q! E{
8 ~% q% n- P5 i/ a: [( P' e# wScreen->Cursor=crHourGlass; " p( t& Q6 O1 A% o+ q
TSearchRec sr;
/ S2 g T4 N4 C8 O$ a0 L8 O1 I6 mTTreeNode *NodeTmp=Node; & \; h' ]/ ]8 y, E% G$ m; H$ g; i# N5 N
AnsiString DirName,DirTmp; ( {- ] A9 u; d5 N* W% G/ d
DirName=Node->Text; 2 Y+ b! R4 T* o# J! f# s
for(int i=Node->Level;i>1;i--)
& [, J2 k' _3 t3 s7 x# F8 r{
8 x8 t5 x2 R3 g" `* j$ m+ PNodeTmp=NodeTmp-> arent; , b+ K7 E1 J; L, \: a1 S
DirTmp=NodeTmp->Text; & t+ b7 y2 z. c# E* f& `
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
! _9 j* o5 q# g( ^" q8 J2 PDirTmp+="\\";
7 d; p* k) ^2 I+ u& s1 ]7 G c! ^DirName.Insert(DirTmp,0); ; @$ C1 p- T8 v2 F% U+ W5 L- @, Q9 e
} 3 C) F! Q+ S! W3 l
if(DirName.SubString(DirName.Length(),1)!="\\") - I. Z3 T3 G! L, K" R
DirName+="\\";
. A+ k! D/ _7 U; n' i' [$ Vfor(int j=0;j<Node->Count;j++)
/ l' _+ k7 C+ ?% W" B% N6 U{ : ~7 m" C7 E1 o5 H/ m7 Z
if(Node->Item[j]->Count==0);
# ? u" e4 D5 W! O. ^) U! w! l{
, S% \1 N: m. Q6 p7 f8 }: gif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
, K0 m' [' ?( r& f5 {4 \4 r" P{ * {8 G+ |) {: ?6 y/ P3 a4 p
do ' q1 j$ f. S9 z$ ]% @& s
{ & A: s8 `6 k2 j
//Node->Item[j]->ImageIndex=5; 3 ^+ T. u! }/ q
//Node->Item[j]->SelectedIndex=4;
. p. _1 F3 Y9 v+ Y u. b; E$ l/ _if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") / d6 |% H3 m) ?4 O1 \& [
{
/ c; B' n4 M5 O- INode->Item[j]->ImageIndex=0;
; L: R- a' ^' ]1 O% |/ }Node->Item[j]->SelectedIndex=4;
r6 v. A# n! h& m6 b- fTreeView1->Items->AddChild(Node->Item[j],sr.Name);
2 q+ P, f7 M. n}
% S8 k' K0 O$ z( k, C) }}
" Z6 p; j4 ?- u. lwhile (FindNext(sr)==0); 1 R4 F2 Z# Y1 a2 Q2 o/ `2 Q) J7 x0 s
FindClose(sr);
0 T& F5 \; C& Y+ g h} 5 Q! ~. d5 U) V
}
% ~$ w! I4 T& \) ^( p* G. ^}
9 m4 ~. B+ U, d( O X& kScreen->Cursor=crDefault;
2 r1 g& I. q6 J w: |4 O} |