|
8 J/ U$ ?; G! V9 @- Zvoid __fastcall TForm1::FormCreate(TObject *Sender) |9 A2 n2 h4 k# `5 a
{ 2 F1 e) g' `/ t! k0 g: M: m
CurrentDir=GetCurrentDir();
% U- h" J! N* k+ KUpdateTreeView();
: F8 u) F. ?4 u, L$ k, w/ T: }UpdateListView(); - ?5 t' E8 A3 d# T2 P6 P; [
}
4 t; v/ z& [* ~5 N- ~//--------------------------------------------------------------------------- * V9 D( y |1 m, F3 W
void __fastcall TForm1::UpdateTreeView() 1 _" q2 ]) t& ]5 x; k
{ ( X% s: _9 V m% Q1 c7 V9 ?
TTreeNode *rNode,*mNode;
/ G2 N' W' _, b" o$ n/ @; dTreeView1->Items->Clear(); , l7 D3 Q/ m0 W/ _
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); 1 L5 P, ]/ ?1 W& {7 z# S
rNode->ImageIndex=1;
1 l( h0 e, w5 U2 x8 ZrNode->SelectedIndex=1; - h5 ~8 U4 a( d, a, j
mNode=TreeView1->Items->AddChild(rNode,"A:");
8 l# L! l7 D8 D, HmNode->ImageIndex=2; ! Q A! y! J1 N* u, A& {/ b
mNode->SelectedIndex=2;
5 U8 _4 f" l* t* tAddDirectory("A:",mNode);
' \2 A/ ~$ B1 ?, G- L. kfor(int i=1;i<DriveComboBox1->Items->Count;i++)
" P* X# u+ P. j$ @; x1 `{
4 I) J: a. p& H9 k# ~. l' Z& DmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
0 X* }, Q4 f- r3 B: G' {2 ~mNode->ImageIndex=3;
4 V+ K1 ~% A" b9 y$ r' ZmNode->SelectedIndex=3;
% O' d' \) O, ], lAddDirectory(AnsiString(char('B'+i))+":",mNode);
8 P7 C* e \7 S1 g: x* C) Z}
) n( y) s; O* I8 b5 W, s}
/ K# G8 [$ `, d) b2 D9 `' m( g//------------------------------------------------------------------------ ; i) X3 v& j3 j0 U& Y- j+ l* S
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
: T4 o. p0 n: G. [ _) d{ - X! @# ]/ B- v( q+ f# U' |
TSearchRec sr; 6 W' i: t1 O$ \1 t2 p# _( v
TTreeNode *mNode;
* ~3 p6 D+ S$ F+ E* ^/ qif(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) + M: z5 x6 d$ K
{
* S9 F3 _7 k" T% F: |if(sr.Attr==faDirectory) ' [: N4 o1 W U0 K# ]* S
{ & W ? I1 U' ^) g% C
if(sr.Name!="."&&sr.Name!="..") + \1 m$ `$ J1 X% w+ s
{ * {1 m8 K- A$ h% u6 b; f
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
/ j9 l; _9 A# U2 s* v. JmNode->ImageIndex=0; + s8 \: T b" [) K$ H+ K$ J
mNode->SelectedIndex=4; & V# f% `9 M: S5 [6 ]
// AddDirectory(path+"\\"+sr.Name,mNode); 7 t1 O* A8 W( ~; ^2 I
} * \ k- r, W+ s" c8 ~# ]/ d0 h
} # v. V3 ~: F( \( M7 L$ Q
} " @# h. _: B2 K$ U4 w6 Z. G
while(FindNext(sr)==0)
! Z1 H9 ?' i" G{
8 }7 ~. C( a7 z& iif(sr.Attr==faDirectory) ' e' d$ ]4 t: F! C. r: N
{ - y# I( Y X/ a. o% M
if(sr.Name!="."&&sr.Name!="..")
; r# K' g# ]4 t! B{
o- D" Q, p6 [8 w n' l' wmNode=TreeView1->Items->AddChild(fNode,sr.Name); ! B+ ?+ V3 L, z4 [6 t+ ]$ p7 Z
mNode->ImageIndex=0;
, A7 K( c5 G: Y' V# H* NmNode->SelectedIndex=4;
4 m% O! G: ?- A/ s: ? z7 G// AddDirectory(path+"\\"+sr.Name,mNode);
) H6 B! q/ j7 [; u" j7 T+ b+ y0 D. g" {}
% ?( a0 F% u4 G* d z3 f6 c} $ E; G7 j- T3 G' i5 c8 \: ]9 b
}
% J2 _4 q ^8 OFindClose(sr); ) N7 ]- y/ j' Y. _9 [- j9 \& R
} 0 Z) d8 {" j' N( X* x
//-------------------------------------------------------------------- % a& S0 v& T) f6 @9 C; Z& c
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, & w; o6 I) T" p, @
bool &AllowChange) 3 c% a0 } _8 u! C1 y$ _
{
- { ]+ L2 y& z( b% dScreen->Cursor=crHourGlass; ( X1 `+ G+ U8 e+ y, O
TSearchRec sr;
( P" ~2 h1 T- sTTreeNode *NodeTmp=Node;
" }) [2 ~. U, E2 e' `# b, m- t; }- PAnsiString DirName,DirTmp;
* ]$ A+ Z/ y0 M0 j6 {DirName=Node->Text; % L; u q5 Z% I# q! l" R
for(int i=Node->Level;i>1;i--)
& i: [6 H3 I7 O. N" z. X/ g{
+ J- ~% D, I' ]! \: }# o- n+ B2 tNodeTmp=NodeTmp-> arent; # s9 B: j; B$ @' j8 q7 Q+ m
DirTmp=NodeTmp->Text;
& I- K: O8 L, ~if(DirTmp.SubString(DirTmp.Length(),1)!="\\") & l1 b+ W% \; H6 Q
DirTmp+="\\"; 6 M: Q& ]8 c3 {! r/ u1 e
DirName.Insert(DirTmp,0);
1 u' ~+ c) s1 ^1 G}
& G4 Y G. _7 }' g+ Rif(DirName.SubString(DirName.Length(),1)!="\\") 8 |7 X! q; j# ~7 |/ N* Z, X
DirName+="\\"; 7 r- a6 w0 B* k, J l( Z8 i$ k
for(int j=0;j<Node->Count;j++) / k- `+ ~# q: v ^2 c* c6 L
{ , v# x- o& {8 i C
if(Node->Item[j]->Count==0); 6 ~! g2 \& P9 n
{ B$ }: u d6 }* k" Q% y4 }; X
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
* O1 ]2 N/ r4 K( W, f{ ( K7 z' T# E: m; o" `) j( A2 ^8 `
do
$ Z. l- z% }0 _2 f4 l2 P4 u$ p{ , ~8 T" E: L" x* D" I0 I
//Node->Item[j]->ImageIndex=5;
0 F. b- }% c; ^# z: E. N1 [% `//Node->Item[j]->SelectedIndex=4;
! J) t8 |+ G8 G$ ~ `if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") 8 S) j4 g" z4 q' M$ D
{
2 ]3 M8 B8 X, w' Y; x. m2 B: XNode->Item[j]->ImageIndex=0; % q1 k; f: E: t9 |. i$ w
Node->Item[j]->SelectedIndex=4;
0 A( \! K8 ?8 V) v) z; q3 e1 mTreeView1->Items->AddChild(Node->Item[j],sr.Name); - Y( C, t7 Q$ E3 k: I) \
} # f: [/ F f7 h- e" `# Z2 K* v
}
5 b( u1 U& o9 D3 k. Iwhile (FindNext(sr)==0); + u9 o9 D5 H s' A8 o9 l9 ~% o6 T6 Z
FindClose(sr); % h4 n# X$ Y3 T5 |( F
}
+ ]+ `. Y! F. N" T}
* [$ @& l' f7 r. x}
" o2 ^+ c M4 o# |: x2 Y9 JScreen->Cursor=crDefault;
g& d* c5 Q% y* ?4 `5 n} |