|
. g6 @% f" I/ y1 i0 X z
void __fastcall TForm1::FormCreate(TObject *Sender)
' j$ i) Z1 N! ~4 g{ % w( A; ]- r4 [7 n' v7 d
CurrentDir=GetCurrentDir(); ' u. g6 {$ g$ w: O P
UpdateTreeView();
+ E+ e6 p9 b' ^UpdateListView();
3 H* ^+ a$ x+ }0 q} * o) O. P6 ]' ?- v. [5 u; v
//--------------------------------------------------------------------------- ( t/ Q* `8 I+ G9 ~1 w
void __fastcall TForm1::UpdateTreeView()
0 y7 b1 i: V5 _! W% ~# `{
+ x4 q+ ]. u; q) RTTreeNode *rNode,*mNode; 9 {! ~* T2 O" O" z( {
TreeView1->Items->Clear();
9 J$ O. ~! ]9 I2 Q: trNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
: V' Y, i! |" b4 n, h5 u: n& CrNode->ImageIndex=1;
1 r% j: ]1 z0 k8 N brNode->SelectedIndex=1;
8 ]( O4 V$ u* f4 ^/ `; B* nmNode=TreeView1->Items->AddChild(rNode,"A:");
0 ?* w! i# W' E2 ?2 MmNode->ImageIndex=2; + l5 O1 L# I0 f3 o# y. m
mNode->SelectedIndex=2; * j; {# `9 K$ G: q. R
AddDirectory("A:",mNode);
' y, [# B" k G, E5 Q: lfor(int i=1;i<DriveComboBox1->Items->Count;i++)
; x3 o/ m: E% D{
3 C+ H% }* m9 k5 y DmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
1 ^$ d& ? A e; e5 Z* M3 DmNode->ImageIndex=3; 8 t9 F$ u w+ I* p
mNode->SelectedIndex=3; & G$ z- l: P' ~1 O8 m) |' B2 u' h
AddDirectory(AnsiString(char('B'+i))+":",mNode); ' i: E# s4 ?. b0 u* x! A- t3 j
} % A E- g0 \+ I1 [" U, n7 q: o% R
}
" N/ h3 Z+ E3 ?5 g; f! `" l//------------------------------------------------------------------------ : M- a- ?! [% @. p& U+ g
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
" ^1 H9 w5 ^4 j g9 I{
i6 S& R% |; s/ p' Y. ?, ]& GTSearchRec sr; $ l5 p& A8 ]2 c1 Q+ p
TTreeNode *mNode;
" g2 L1 e% F/ s& }0 Y- _, D$ Bif(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) % A; V7 e" t, p% z. j# f$ Z
{ , z: ]' R/ R, }9 G- z. P% j& P% ?
if(sr.Attr==faDirectory)
5 c! O' I5 H! F# I* o2 W% q% K{ 2 O' |) G0 H- X8 E
if(sr.Name!="."&&sr.Name!="..")
" @# p' v+ e2 k& J9 x{ 8 }# h* P6 k" y+ |$ A) y
mNode=TreeView1->Items->AddChild(fNode,sr.Name); 2 L; }9 L8 Y* I4 c% Q' K
mNode->ImageIndex=0;
" F/ H d' x% k- rmNode->SelectedIndex=4; + O; z6 e; p# u# r) L9 T- A* C
// AddDirectory(path+"\\"+sr.Name,mNode);
8 e3 K' K! V2 B/ \5 p}
1 T: u. C6 v% P; ]* R; r} * J# W! `% ^% k, I, L) e3 {8 s
} $ t$ Z* n$ i5 a4 o% i) \. K
while(FindNext(sr)==0) 8 e6 X9 g* H$ [# _+ i
{ " ^+ B& K5 \# _1 S
if(sr.Attr==faDirectory) 4 e4 P! z) G/ V4 j* ?: l: J
{ # a& J( q8 N+ `+ t- T/ d
if(sr.Name!="."&&sr.Name!="..")
# ~- n+ U" A- K/ @0 G f{
4 o& ~" f+ ~% n8 gmNode=TreeView1->Items->AddChild(fNode,sr.Name); ; D/ x4 L3 T, A: ~1 V9 w% L' m
mNode->ImageIndex=0;
. Y2 K* b1 s! s( SmNode->SelectedIndex=4; & f! y. L( W" x' a' \1 K E
// AddDirectory(path+"\\"+sr.Name,mNode);
6 @1 a0 E+ V y( \6 m} $ w; a, e" u' \# B- v! z
} 9 L) X& O. T$ }4 R( p
} " H: F7 A: u( \" J7 v; {* l
FindClose(sr);
8 V e8 P2 y" F% I" {6 ~3 [} $ h0 t3 I6 I1 r5 r0 ~6 m5 G
//--------------------------------------------------------------------
7 t( b! T; m( ^7 U Wvoid __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, 2 s5 C; M. `0 n- P/ |7 H) P" M, U. r
bool &AllowChange)
9 o2 K- f' e3 h/ g5 V{ ; f1 T; c( p& Q, w3 |8 Z2 P
Screen->Cursor=crHourGlass;
$ R* Q& m7 K/ V8 b3 ATSearchRec sr; ' D- }. y+ J" u6 b: K4 q
TTreeNode *NodeTmp=Node;
8 J" O/ |; O. ]0 r# Y3 B& hAnsiString DirName,DirTmp; n6 Z6 M7 a0 {4 [
DirName=Node->Text; 1 v6 H( w& |: K4 }; i
for(int i=Node->Level;i>1;i--) , h* B, n2 i8 V6 {
{
V, `/ f9 L4 l+ V ?+ M# ?NodeTmp=NodeTmp-> arent;
/ t* }5 @& E# i7 W; N& QDirTmp=NodeTmp->Text; 1 w, f' @" [6 X( T3 K
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
9 f* P* [5 L9 t6 R. oDirTmp+="\\";
# E0 z% F" d6 u1 _8 J4 ODirName.Insert(DirTmp,0);
. G B2 [/ r0 {}
- A3 V q7 L4 h7 sif(DirName.SubString(DirName.Length(),1)!="\\")
8 Z/ L. T: ~( f0 Q0 f E: iDirName+="\\";
! e' |8 Q% K( t* B. Ufor(int j=0;j<Node->Count;j++)
8 ^3 w3 V# r1 }! e' n5 C4 a{
/ H/ Y: w# b- b# \if(Node->Item[j]->Count==0); ' ?, [2 p) T# L/ ~! i( c( a: s
{ ! N! u! A+ M" X% T
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) 4 ?# e" X- K9 n% \; P
{
G5 U; _1 A" V. v' odo : I }3 i j9 ?2 A3 C1 F8 D
{ # `6 e/ x, V& Q1 w
//Node->Item[j]->ImageIndex=5; 2 |% Y( I# _$ d* J
//Node->Item[j]->SelectedIndex=4;
" o, {: r/ e( B% ?- vif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") 4 p/ j. Q& e( J2 N
{
; K2 P# c: H& P( V* Z$ E2 @. @Node->Item[j]->ImageIndex=0;
" u2 @0 v! M% } [: t' k4 A; ONode->Item[j]->SelectedIndex=4;
0 I) P% k6 }9 @" O& W1 ?8 T4 lTreeView1->Items->AddChild(Node->Item[j],sr.Name);
0 _! E* f5 V8 g2 b: j6 D3 ]} - |( G. o' T9 P' W
} & [7 X2 ^4 i! w) O
while (FindNext(sr)==0);
: l5 s: s2 o F/ g# qFindClose(sr); 9 W0 p+ i+ {* e
}
7 i2 _6 R( l: }; ~; G2 o}
+ G. o' t& R# J3 s% G2 L3 E) p} 5 Q( S( F2 Z: A
Screen->Cursor=crDefault;
& W, O7 Q8 r `5 V* M. B: f} |