|
% Q9 Q" N# p. K* F1 V6 pvoid __fastcall TForm1::FormCreate(TObject *Sender) 4 P/ K3 _$ z( L
{ : p& ^/ W# Z \
CurrentDir=GetCurrentDir(); , G" n# C2 q" k3 f" I0 R- U2 E
UpdateTreeView();
- N0 l5 b' j. |5 o& |' ZUpdateListView(); 9 s+ M: O1 G% {; @6 v' `1 Z+ V
}
' y( Q6 w; ^. t/ P: {//---------------------------------------------------------------------------
0 a7 f# h" B. Q W: k7 B% T. R. I* Vvoid __fastcall TForm1::UpdateTreeView() ) b3 y" E0 r5 _/ i) M9 ]
{
) a# T* }3 j& U; N. u4 RTTreeNode *rNode,*mNode; 9 C [6 s: h' X9 p$ G' s: ~* K& L
TreeView1->Items->Clear();
2 o- Y' s) n) U2 SrNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); 1 X1 v1 \# i& S; ]; u! J
rNode->ImageIndex=1; 4 r% a# Y; w) q7 U# J3 n' F# S
rNode->SelectedIndex=1; $ s' L/ B9 r& O4 W5 I' w
mNode=TreeView1->Items->AddChild(rNode,"A:"); 6 ~# S$ e0 i' p) ~2 R; X2 C, ~
mNode->ImageIndex=2; 0 U. V2 A! `* ]$ s3 k+ u
mNode->SelectedIndex=2;
6 D& X3 X! H! N7 lAddDirectory("A:",mNode); + ^: W/ ?9 o6 x
for(int i=1;i<DriveComboBox1->Items->Count;i++) + U' X# A# `* `
{ 9 |; R! Y/ R, D9 y0 W# X
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); $ i+ j, H8 l7 L9 W& ~
mNode->ImageIndex=3; : A8 F$ K/ X" H* i
mNode->SelectedIndex=3; # q& G3 I- o/ i, v g
AddDirectory(AnsiString(char('B'+i))+":",mNode); 0 J& E' K( l5 a
} ; c2 u' w/ W s' ^+ e- U7 f
}
0 O- r7 _$ C' V6 G& n5 M+ A//------------------------------------------------------------------------ ; ~; J7 ?' l' f8 z/ x
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
2 I# t( E0 D9 i! _8 [; g! p{ * c' |4 {, J* \
TSearchRec sr; ' k/ e' X+ z% R" X `& I; m* E
TTreeNode *mNode;
4 v- j& k2 E# X. _ ~3 }$ lif(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) 4 s. l# Q7 ^8 ]6 v: X8 O& n; l8 U
{
$ T! i5 b1 M3 fif(sr.Attr==faDirectory)
8 M v' _8 j: }" b3 e0 I{ ' f4 \4 i" _4 Q% V
if(sr.Name!="."&&sr.Name!="..")
3 l- U5 I/ g/ ~- N{
% m9 V2 }* X5 r* `1 B: @; o' HmNode=TreeView1->Items->AddChild(fNode,sr.Name); ) _; f! N9 L$ o A ]) u8 S( i
mNode->ImageIndex=0;
) `7 g! o0 J1 FmNode->SelectedIndex=4;
. p- n9 ` T5 b* }8 o3 V" F! w0 f// AddDirectory(path+"\\"+sr.Name,mNode); ) X8 N1 l! g% o0 j% E9 E
} 6 {/ q; D1 X/ m4 f* ]
}
0 C4 M9 u( f, G} 4 K, Q/ C: c/ s
while(FindNext(sr)==0) ' ^6 N2 T3 i0 s" A
{
9 w& v( b9 I n. x8 \/ }" Jif(sr.Attr==faDirectory)
9 E Z4 G1 P- }+ b8 A{ ! o$ X; D+ }' y9 K3 h6 Q6 ^& M
if(sr.Name!="."&&sr.Name!="..") 5 t% o: ]& v" g4 n: F4 ?
{
/ t: a" F9 Y G5 c9 fmNode=TreeView1->Items->AddChild(fNode,sr.Name); 6 U/ \9 i7 s) p* V& X- g
mNode->ImageIndex=0; # N2 B, v6 ]) M5 N ~
mNode->SelectedIndex=4; % c* N2 H9 O6 J+ m3 y( a; d6 R$ Q
// AddDirectory(path+"\\"+sr.Name,mNode); ]) C; u% D7 Q; ]: H
}
9 |2 t$ t2 v- s* @0 U) O" C! ^}
; w$ P9 c2 K, \4 K! f5 C. ^, K} ) [+ ?' x8 {3 }2 q6 |, `8 n
FindClose(sr);
' s1 ]+ L/ m; a8 g8 d}
& D% ~0 B! a; [) d//--------------------------------------------------------------------
# X* r0 B& u3 \, D9 q# p) cvoid __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
# S- }8 L- I. W( o9 _" i- ubool &AllowChange)
- b& x2 v( {7 \{ 3 x* P) k/ g' e2 H8 n" P
Screen->Cursor=crHourGlass; ; J" V9 F: K% k! H
TSearchRec sr;
/ |; C- k# j+ }2 B \TTreeNode *NodeTmp=Node;
4 G0 p2 z8 \. C0 D |AnsiString DirName,DirTmp; ; Y" S8 [. a) k0 C6 U
DirName=Node->Text;
4 n( s0 O0 \ U) Y* z# Mfor(int i=Node->Level;i>1;i--) / m& \5 |5 W; r. ^# }; ?6 j
{ . y" U# I6 x$ {& @
NodeTmp=NodeTmp-> arent; : v5 Q1 c$ s% w
DirTmp=NodeTmp->Text;
K* e! H- _ R5 j& K5 J7 Rif(DirTmp.SubString(DirTmp.Length(),1)!="\\")
) q9 F- g- m$ l; UDirTmp+="\\";
! P3 Y/ S5 l* o$ \/ R) xDirName.Insert(DirTmp,0);
" f/ o ~. m$ P" y3 h}
2 ^% H( _( l3 x9 U4 gif(DirName.SubString(DirName.Length(),1)!="\\")
( x6 I6 x+ S7 A2 j3 F2 u6 ^DirName+="\\";
; j5 I* t5 l5 k" v. dfor(int j=0;j<Node->Count;j++) d; y% D1 B, u% |
{
6 C7 o" G0 S/ z+ [+ r. Wif(Node->Item[j]->Count==0);
2 @7 X. n9 @1 Q' Y{
$ n3 ]) G: J4 `+ Sif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) $ k( n+ E6 G1 \7 m4 B
{
; L9 e0 D% ?8 e1 Z- g4 d0 pdo
* D# E* v" {) o0 d/ t3 w- Z1 \# S3 f- ?{ 5 x0 a5 C) U7 X( z$ D+ u2 a# `
//Node->Item[j]->ImageIndex=5; ) j1 r! g [" I: Q$ i9 u& H9 M
//Node->Item[j]->SelectedIndex=4; ' F' W3 b/ Z. |- v8 z7 b: |
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") ' W# ?! k9 \" }5 d
{ . f7 B. G; P* K$ f4 ]4 J4 v4 d; U
Node->Item[j]->ImageIndex=0; 8 l0 ^5 j# b5 Y
Node->Item[j]->SelectedIndex=4; 2 s1 a+ r5 g- y* P' p; H# V
TreeView1->Items->AddChild(Node->Item[j],sr.Name); 8 t: N( q: l0 [5 V' T/ m, ?
} / ^3 X& B+ H; g4 b
}
/ x3 V7 k: M' L2 Q t* S4 }2 A1 lwhile (FindNext(sr)==0);
' u8 S: c, N2 u z/ [8 ?. Z5 ^4 Z3 \/ KFindClose(sr); ) z$ @* _8 M; o! D3 ]/ `
} : Y' u( Q& ~0 R: \% n
}
$ ^4 k7 V. W: R% D: E$ i}
- J& s) x: E+ m4 {2 t& s/ g m! g; GScreen->Cursor=crDefault;
! }% I2 B2 F0 u+ f6 w} |