|
$ T/ J1 _4 `; y( i( b b
void __fastcall TForm1::FormCreate(TObject *Sender)
, e* e2 w' Z# P* ~% Q{
6 O7 d0 s, J% c- l8 _+ {, Z, V+ \CurrentDir=GetCurrentDir();
+ h- o/ H7 u8 M. v% [" ^UpdateTreeView();
8 P) u' }7 N" P2 KUpdateListView();
0 m: N: \# R* a0 n' R( `& m4 c} % _5 t3 d: ]5 b ~ o
//--------------------------------------------------------------------------- * N9 c2 W% [" _' C
void __fastcall TForm1::UpdateTreeView()
6 @5 B5 Y3 b( }1 c( j, ]9 p/ ~{
* ^6 _4 V# k4 oTTreeNode *rNode,*mNode; 1 S& M, n2 v7 n+ C0 |' N1 Q1 S
TreeView1->Items->Clear(); & G3 W5 O3 B$ k( N+ h5 V
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
; i( W5 k) k$ p: WrNode->ImageIndex=1;
2 x/ u' u8 m5 k8 x2 H) f8 f) d3 OrNode->SelectedIndex=1;
3 v& k4 b5 N* q6 wmNode=TreeView1->Items->AddChild(rNode,"A:");
/ n( ?; ?- J) y \3 lmNode->ImageIndex=2; % h* Z& g6 E" K8 B
mNode->SelectedIndex=2;
3 @2 z& |4 \1 N7 FAddDirectory("A:",mNode);
" A7 p8 a, h$ P8 @for(int i=1;i<DriveComboBox1->Items->Count;i++)
" y" ?" k9 v+ i8 u I{ 4 }& H8 m5 g7 ]" J
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
, ?8 k: z. |# wmNode->ImageIndex=3;
4 A9 L5 v' V e- U6 G+ MmNode->SelectedIndex=3; & ?; G1 _: r+ g3 ^. C9 X6 L: }* j
AddDirectory(AnsiString(char('B'+i))+":",mNode); " e% D1 U6 M. o2 Z# I+ ?
} # Y5 S+ V* y* t3 @0 v' V9 i
}
, k- k# Z) A+ _//------------------------------------------------------------------------
2 P& r/ N6 H! v* G6 \' lvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
3 J+ N0 F$ Y% H{ + }: f1 ^2 z( l9 o6 G+ E8 N
TSearchRec sr;
( D, H. d! {$ G, ]4 ]9 wTTreeNode *mNode; $ k; i+ p2 |( z% O: A7 ^1 q0 j
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) / x. u0 X6 z& O7 C! T
{
. k6 f. F! ~) V1 G& Z' A7 b6 e1 ?if(sr.Attr==faDirectory) 8 \$ Z7 M+ i) [: U( i3 x
{ * t% }: v& ^/ P/ a+ H6 r
if(sr.Name!="."&&sr.Name!="..") 9 R7 v$ h" O0 O# E( Y
{ & x- L" Z4 [8 r* {/ }
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
. ]* H/ Q" m6 c0 p( \& }mNode->ImageIndex=0;
& e/ \1 o# u3 {+ l7 F* E+ t% Z$ kmNode->SelectedIndex=4; 1 F: L0 C+ \: C/ S- w$ [$ u( B
// AddDirectory(path+"\\"+sr.Name,mNode);
4 p( ^, D/ z4 {2 C# E4 w}
5 w! K0 f; k( e4 Q3 w} 0 \ A7 j5 t: c, B" L1 ~$ P
} 6 F% c/ y7 {* I
while(FindNext(sr)==0)
% O* y7 K$ M2 @5 f3 l1 k7 a' ~! S, ]{ 7 }" V+ O4 k5 n! ~' T
if(sr.Attr==faDirectory)
Q0 k- I2 c$ P4 ?{
% t: C2 W1 s/ `4 m; @if(sr.Name!="."&&sr.Name!="..") . {& |$ p4 t6 }
{ ! A2 n" ]5 ?. ^4 ` R
mNode=TreeView1->Items->AddChild(fNode,sr.Name); + X6 ^$ U. Y+ e t; T
mNode->ImageIndex=0;
6 \) e$ I3 R5 }mNode->SelectedIndex=4; 5 O" W% O4 \# ]' l/ d' x
// AddDirectory(path+"\\"+sr.Name,mNode);
5 p. F/ \# {5 |, [' Y7 E} 5 b( t) [9 Z' i% e* u
} * `% X2 V/ O/ d3 `6 b7 y! o+ d: k
} 9 S c/ w3 T2 k# Q4 u( V6 u9 f: x. ?
FindClose(sr); / Q" ~) J, q7 M4 z( u+ \
} 7 r: l' L. A, A: j8 o
//--------------------------------------------------------------------
% l6 E3 E B' [0 n, avoid __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, * h1 p, p( S# p, B6 w8 w+ f
bool &AllowChange) 4 d+ x) G* v# I+ d9 P
{ ! k! @( J$ i2 h- m6 ^
Screen->Cursor=crHourGlass; ) P$ O4 h4 u1 X% ^. u; D/ H$ g
TSearchRec sr; 2 _2 Z' J' Z! w, a
TTreeNode *NodeTmp=Node; 4 U O# ^" D1 ^% ^4 s q' x% A# `
AnsiString DirName,DirTmp;
' u4 k% }+ n4 j- @, W9 VDirName=Node->Text; ' S/ a. p x2 Y2 z% {5 }
for(int i=Node->Level;i>1;i--) + T( j" o4 i5 `
{
L9 V1 k( n& v* HNodeTmp=NodeTmp-> arent;
) V& Y! m v- B. q/ JDirTmp=NodeTmp->Text; 5 `, @' C- t! h. ?9 D
if(DirTmp.SubString(DirTmp.Length(),1)!="\\") % i5 \& d% `2 J! g
DirTmp+="\\"; 3 k) l1 p, k8 P! I
DirName.Insert(DirTmp,0);
+ X" l8 I" X) c) K; N- r. r}
7 ]+ u2 A0 {: \) S& B0 zif(DirName.SubString(DirName.Length(),1)!="\\") : x/ j/ y1 v4 \% y9 E `) S6 {
DirName+="\\";
+ d0 h n* D n; Q1 yfor(int j=0;j<Node->Count;j++) 7 {+ b; n. e8 c& h& s2 r( n
{ # c' T! \- b+ U8 E7 n; B
if(Node->Item[j]->Count==0);
0 g9 B2 I/ I1 Z, k* @) h S+ V{ . Q, C, E' w- w; v& ?5 E) k/ |
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) 6 k, o/ A6 V: [7 k/ R% z* v& R
{ 1 \/ j' J3 I5 _, `0 D7 X0 k
do
% b V9 q3 q5 E) |4 R/ C6 K{ 8 {! d# x7 \0 N
//Node->Item[j]->ImageIndex=5; 5 h2 q# o+ R$ U3 L7 m. w. B
//Node->Item[j]->SelectedIndex=4; 1 ~- \4 x$ T* ~- H& e
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") * K2 r$ ?2 \9 W( g1 o
{ : d0 |( G: u$ x$ M+ k4 g
Node->Item[j]->ImageIndex=0; . J2 C, O9 K6 w. p5 ]
Node->Item[j]->SelectedIndex=4; 2 ?2 u0 ~/ V; T, h! i
TreeView1->Items->AddChild(Node->Item[j],sr.Name);
% L5 } t' f) E} 7 }* v9 C M# r% L
}
0 ]# C7 Z3 C C( ?' l' u$ Ewhile (FindNext(sr)==0); " a/ V6 v, z J7 @8 W' {
FindClose(sr);
7 a) K, w, M6 H! }' M7 i8 h$ P} ' }% M) s2 n, X; ]
}
6 I1 P# R r- E1 w6 e' s} ; a4 O3 ? b5 V9 F2 K$ \6 T& \- E
Screen->Cursor=crDefault; % p( p. d& s5 c+ C" `4 T
} |