|
$ Q2 k( B+ D) x
void __fastcall TForm1::FormCreate(TObject *Sender)
$ N1 S- R7 E* \: u{
; r/ y j- z" nCurrentDir=GetCurrentDir(); ) ^) Z" o( P2 ?7 u
UpdateTreeView();
x6 ~/ r) [7 }! K3 jUpdateListView();
/ z0 t2 L3 [/ H2 {- |}
1 E/ i. G6 N1 E( S: O& i//---------------------------------------------------------------------------
, s1 |. c. _; x2 w5 `7 Avoid __fastcall TForm1::UpdateTreeView()
4 {. i3 k) W, R4 O$ k{
' u0 [' s" Z4 \+ _! @4 s6 C; TTTreeNode *rNode,*mNode; $ I5 l. F. v1 s0 {' x* A
TreeView1->Items->Clear();
7 L+ L4 G ?& P. m% U3 yrNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); x6 j" N0 ?- w) s8 {
rNode->ImageIndex=1; ( M) E( u9 \; h
rNode->SelectedIndex=1;
2 C5 B! X/ H) r7 b" G7 ?, fmNode=TreeView1->Items->AddChild(rNode,"A:");
9 x( Q' |0 C4 D4 u# K; }# _2 b, tmNode->ImageIndex=2;
2 v' W" l3 p4 UmNode->SelectedIndex=2; 5 _7 i5 P# o1 f2 t! N* W
AddDirectory("A:",mNode); 2 |- W8 U1 W* U; D9 V
for(int i=1;i<DriveComboBox1->Items->Count;i++) 5 [" T* ?7 H; O" n5 ?
{ 8 G* ^( _7 n7 x4 N7 m' i7 ] I
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); + O6 m/ d" b( g! U
mNode->ImageIndex=3; + f3 _2 z W8 y4 Z4 g/ [
mNode->SelectedIndex=3;
' T T: G4 j: @9 x2 j5 j$ h9 OAddDirectory(AnsiString(char('B'+i))+":",mNode);
3 S- G/ h. U/ w; V. H7 `}
( Z4 B' }7 ?( k& X" g( Z} 9 ?, h/ [9 Z5 d/ g
//------------------------------------------------------------------------
1 j! D8 c* x0 Zvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) 1 U5 c7 z+ ~9 I* I3 V' |
{ - U; g2 ]3 ^* N) `0 d2 W
TSearchRec sr; ( A+ i) X7 W7 w( x G3 z6 ^8 v
TTreeNode *mNode;
; K8 l) j2 y7 L& h% k- T, fif(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) ! ]2 I" ~9 C8 A# ^* Y% F3 A* y0 O( e
{
. p% R0 q' c( f; Z0 Oif(sr.Attr==faDirectory)
) I A; K& \3 ?" N7 X7 x3 G{
4 X5 E% m9 D: N- A; Z* Q4 T7 cif(sr.Name!="."&&sr.Name!="..")
( J. L4 {# d" n8 B7 x{
. d% w3 u- t/ |; hmNode=TreeView1->Items->AddChild(fNode,sr.Name);
9 j1 O+ z9 W) e4 ymNode->ImageIndex=0; 4 s9 E; y9 n% s# e$ R1 {4 `9 A/ k
mNode->SelectedIndex=4;
+ E' g1 G+ e9 V. g+ A+ H// AddDirectory(path+"\\"+sr.Name,mNode);
8 @3 B: Y8 M' P: v$ V6 A# u' ?} / L" V% w0 k; R. |
} ! F' [( a f5 w2 i2 S1 m; V* K/ m
} ! g# d: o# F+ s" k: k+ p+ E" u
while(FindNext(sr)==0) * k& x9 U( j9 ?! Q8 A H
{
# r, g; q7 n% i: r( \- c- [if(sr.Attr==faDirectory) ; F8 W2 A" D+ C4 v
{ ; y# k7 `* c4 g: w! ^
if(sr.Name!="."&&sr.Name!="..") 9 G' e/ \1 b& t- ~3 {1 a
{ " @2 I) \, ^2 `5 o9 ^ f
mNode=TreeView1->Items->AddChild(fNode,sr.Name); + u% W9 a) N& z- \) A8 o& O
mNode->ImageIndex=0;
. F' i! B/ _' p' h/ T! GmNode->SelectedIndex=4;
% O. Z6 M8 {$ D0 t) h// AddDirectory(path+"\\"+sr.Name,mNode);
$ r) H) `0 {3 p& @}
6 `2 ]$ x: y4 N: H- g}
- P# t5 f8 W4 C( C}
: s$ l. Z0 I2 T* U$ [8 X- bFindClose(sr); 9 B* n) B [; E5 r+ m( @+ U! n8 `
}
# D6 M' L2 Q. q) Y& r; z9 L//-------------------------------------------------------------------- + K ~' g8 O* z
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
) p0 R) B. _! ?bool &AllowChange)
' b: M, J5 e& M; W6 M3 W{
0 x& U! `% f. Q2 z4 SScreen->Cursor=crHourGlass; ( D% a. B m3 W$ s' i/ v! _ ]) G
TSearchRec sr;
* _7 g; T* I% E2 ~5 t: `& DTTreeNode *NodeTmp=Node; 2 r- }' ]3 G# L* }. f, Z2 n
AnsiString DirName,DirTmp;
5 P: M- j7 y5 }# U; N+ i3 YDirName=Node->Text;
$ V; S; C0 _* v5 S# \" ?# @2 Bfor(int i=Node->Level;i>1;i--)
7 m& H$ v' K1 [; {8 q7 ~{ " ?2 g5 t+ y% x3 K. J2 k
NodeTmp=NodeTmp-> arent;
- U8 t/ _8 G- ?4 VDirTmp=NodeTmp->Text; - U6 E5 ~- q" O3 ]% l
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
! |9 O- i3 G' S$ mDirTmp+="\\"; 8 \% {9 _% L1 n% J
DirName.Insert(DirTmp,0); ) B! B6 \ A( p9 L! H
}
8 R+ D' ]' {2 mif(DirName.SubString(DirName.Length(),1)!="\\")
% v# l, f) h {/ W! |0 X bDirName+="\\";
6 a4 o* k2 m& T* Jfor(int j=0;j<Node->Count;j++) - S$ o7 p8 D2 W1 i* D
{
% b9 r5 j& C# K0 {if(Node->Item[j]->Count==0);
0 ~) r5 t; N) o S5 N0 H{ : A, ~9 e2 ~, l7 y. H# t: P; K
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) - W' o2 b- P7 }( s
{
1 w2 {3 R1 ~- U" L! {9 ado
( X- L1 }$ k* W' L$ q{
% S+ Z; k, _! H r* A% p+ B# x//Node->Item[j]->ImageIndex=5;
$ m5 F, A" k; Y3 n3 p6 j//Node->Item[j]->SelectedIndex=4;
$ t3 ^+ [0 j O3 m, Jif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
" L/ d/ z. q- f7 B% @{ ) @( M2 k& S& u- R; E( v# {% [& c5 R
Node->Item[j]->ImageIndex=0;
7 G1 P4 E% t* b2 TNode->Item[j]->SelectedIndex=4;
3 G+ B/ A# l5 n+ z+ aTreeView1->Items->AddChild(Node->Item[j],sr.Name);
, n1 A3 C6 v$ R; M( n. B} 4 V* I( y, g# N/ q8 q' }: G
}
) }! n) [! W$ Kwhile (FindNext(sr)==0);
2 r* d( v* d% o" I$ a+ ?+ jFindClose(sr); o) m8 Q: ]- [: l% B' J: |7 E0 T
}
7 a) k- v- p$ K; X( `" f- `, X}
8 L1 w. p( `& g1 M+ H} 1 w$ W. G) f, i0 S3 [
Screen->Cursor=crDefault;
. x4 X$ \* k) q( j- w3 l} |