|
" `& M# e( e2 u7 l7 hvoid __fastcall TForm1::FormCreate(TObject *Sender) . D* ]: x5 W8 I& m% v
{
- o K/ R$ f7 n% J: k7 `0 e" O: ^CurrentDir=GetCurrentDir();
! w) a" g1 a' O8 }UpdateTreeView(); . j' P# V$ o9 w7 r- Y
UpdateListView();
% O' r: Q9 _8 w2 n- i}
9 v; r9 M- M& d( \, k- q//---------------------------------------------------------------------------
7 f# ?% i% ?! `. d% `void __fastcall TForm1::UpdateTreeView() ! W( B- ~* H- ~9 F7 y
{
O7 g$ H/ b N" w) @TTreeNode *rNode,*mNode;
* q5 _- K: w4 ~- ATreeView1->Items->Clear(); . ^9 Z8 g1 O% r) x- \5 ^
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
# d* d% o- l- a, Z9 N5 H7 |; y2 h5 UrNode->ImageIndex=1; ! N0 P, o4 \8 E# V& p% _9 c
rNode->SelectedIndex=1; * o; x+ t6 O3 _# j0 I$ n
mNode=TreeView1->Items->AddChild(rNode,"A:"); $ R! Y7 D; {% x( a" x
mNode->ImageIndex=2; % _/ R: {6 c% Y; ?
mNode->SelectedIndex=2; - F- D: b1 l! v8 I* [
AddDirectory("A:",mNode);
R% ]; r. F, Y: efor(int i=1;i<DriveComboBox1->Items->Count;i++) " u5 T- b! d) p5 ~" N
{ $ ~+ d( T u5 ~! a: \8 @+ V
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
y5 i d* G; q- ^, ?mNode->ImageIndex=3;
# W0 J. _% i* Z0 j2 D/ lmNode->SelectedIndex=3; & W* f+ S+ O) v4 S- O% w
AddDirectory(AnsiString(char('B'+i))+":",mNode);
2 k- A3 t9 O0 T9 e+ c/ e5 X}
9 N2 u7 P8 O3 Z! p' N}
& k" l* O+ n6 J% s5 m9 ]//------------------------------------------------------------------------
}, ?- R3 \8 h, L% ]1 }7 mvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
& X- s: y! {6 [( L9 a& F! e& d ?{
' T) R6 V9 y( C# D9 o: B4 N( ?4 mTSearchRec sr;
$ E/ T( _' y2 i7 ITTreeNode *mNode; 7 L' r" t4 [, B; `# A. J
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
5 @7 Q0 W/ e6 [0 K{
) P8 r) e2 D: f$ y( G% Fif(sr.Attr==faDirectory) 6 V0 b K3 P4 d8 j8 y4 k3 r- V
{
1 ]% E( r @- l& cif(sr.Name!="."&&sr.Name!="..") / R$ k# g( R7 n, l
{ 4 b! K" i) X; Q) e0 y9 x1 N- d
mNode=TreeView1->Items->AddChild(fNode,sr.Name); ) m7 z |4 L5 Z3 g& Q! @, ?
mNode->ImageIndex=0;
3 x9 P' w# S- q* n1 e+ VmNode->SelectedIndex=4;
- d) ~ |* k% A+ S. e+ O// AddDirectory(path+"\\"+sr.Name,mNode); 0 U1 f1 R8 r9 D" I; u3 U
} + T) G6 Z3 v- k! G( [. a
} 8 ~2 _) p' x; t3 n3 s/ X
}
: l z3 b3 L& Lwhile(FindNext(sr)==0) + K& d0 G/ [1 e6 X1 a) K! v
{ - ]2 g2 ^% c! I, b
if(sr.Attr==faDirectory)
5 O4 q' y. a& r{
e0 u9 j' {; _' W- N6 \if(sr.Name!="."&&sr.Name!="..")
( t3 R4 {* B) |{
6 D) Z$ X% w5 jmNode=TreeView1->Items->AddChild(fNode,sr.Name); + U0 T+ }' p; A# \5 L% s. c% Y% j0 d
mNode->ImageIndex=0; % x/ S, x' h# v% O1 G& }( F8 g: `! X
mNode->SelectedIndex=4; & p* @# Y B0 K/ `" c5 V
// AddDirectory(path+"\\"+sr.Name,mNode); $ q3 O' s1 j6 M, |1 B; g
}
/ ~: i7 X1 s4 O$ j$ u9 a}
& u: C* ^, K9 u. o* D, B} : F, h; M& r: I* r# j: Y' r
FindClose(sr); $ i6 }0 ~% f! d2 \# j9 ~
}
T/ h$ ~+ {: M0 J% ^6 B' u//-------------------------------------------------------------------- ' n V- o% C) d# D0 y& s. W
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, L- S% d+ u0 M$ V0 g; c
bool &AllowChange)
( |4 @! C6 p9 C; i+ B{ : R i' D& u! n& L: L
Screen->Cursor=crHourGlass;
. C$ h' |) k) K( T( X2 V4 dTSearchRec sr;
# _0 t8 p- H, E$ X" X/ D2 v9 OTTreeNode *NodeTmp=Node;
% B, P& k1 X4 A9 ~1 a! ~, g3 DAnsiString DirName,DirTmp; & g, b$ p* }1 {, B+ p9 B/ R
DirName=Node->Text;
- G6 `8 u9 f" L2 X4 ofor(int i=Node->Level;i>1;i--) ; F Y1 f: \6 }! m$ n* P+ F
{
" E5 L- H5 r- R7 TNodeTmp=NodeTmp-> arent;
* h( g3 g {1 o& j6 T9 QDirTmp=NodeTmp->Text; 4 L7 j4 Z* W- S. p' N9 b" y4 `
if(DirTmp.SubString(DirTmp.Length(),1)!="\\") 4 m d( l' X6 `4 j8 W* c
DirTmp+="\\";
7 O; V( `4 C% I( {DirName.Insert(DirTmp,0);
) v* h2 i& v7 d}
5 h$ L! X0 Y C3 nif(DirName.SubString(DirName.Length(),1)!="\\") $ L5 m# C3 Q* z4 b7 c
DirName+="\\";
" q/ L3 h& e4 j- H6 i( Ofor(int j=0;j<Node->Count;j++) 4 f0 d* [+ ` ^* B c
{
0 v- S7 Z! p Wif(Node->Item[j]->Count==0); 6 `/ J; L6 D8 Y/ H" E2 a7 \( _
{ 5 H) l% G e3 g3 Z
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
. q2 H- V5 o0 v: o; V' x{ 1 h, Z/ w) Y$ |5 v: ]
do
4 t. j/ X7 z% G" q4 ]{
/ a* Q! c: o2 w3 `' j//Node->Item[j]->ImageIndex=5; ! ~, G! m! R' @8 J' S) y
//Node->Item[j]->SelectedIndex=4;
, T# s8 G3 ?# p' f& g! l* u! E2 Oif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
( r" I) ?1 _5 I. E. p% s6 u6 d% F{ , _9 A: @0 j4 }$ R) Q
Node->Item[j]->ImageIndex=0;
) |- H2 j; T: p( S: z, ?1 hNode->Item[j]->SelectedIndex=4;
5 ?' n4 Q) H0 B9 XTreeView1->Items->AddChild(Node->Item[j],sr.Name); 2 M. V" [7 I8 S
} ! U0 ]! J9 f( z
} + s; m1 b# @0 @9 O
while (FindNext(sr)==0); * R+ p# i4 u# w- A! \! G2 H' Z9 ?
FindClose(sr); $ J8 m) L& p: @+ _9 l, T
}
! L Z( _# ?' c: W& g" [) g/ `# {$ G}
+ f- z, C0 [3 w}
# f$ I% N; G9 w+ G# q9 }Screen->Cursor=crDefault; ' o: s# _3 D3 H. D0 Y3 E
} |