|
7 d) a& U d0 [ ~, s @- k$ dvoid __fastcall TForm1::FormCreate(TObject *Sender) 0 V) m5 C; v1 Q! g
{
3 C0 z! U* N# \: ~6 P+ yCurrentDir=GetCurrentDir();
1 u6 @5 S- c% `- R: C' m5 iUpdateTreeView(); / _8 C8 k3 F6 p' G+ [
UpdateListView(); . R! T. w, \, B5 l- z
}
5 R0 P: G# V# w1 c//--------------------------------------------------------------------------- * `0 ~ \% y c! W/ C0 M+ S8 O
void __fastcall TForm1::UpdateTreeView() 0 m; x9 [$ ^3 B# J# `6 F4 T
{
; F! \5 V$ L: ATTreeNode *rNode,*mNode;
3 Z( @5 n6 |% ETreeView1->Items->Clear(); $ }: `' _; o# K' `
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); $ r0 q; \. [0 i k7 J# C; C7 U
rNode->ImageIndex=1;
- p( \8 j: c$ h" A+ V5 ^ m! FrNode->SelectedIndex=1; ; A( {0 `) n: c
mNode=TreeView1->Items->AddChild(rNode,"A:");
1 ]% L. Q' {7 F$ W5 YmNode->ImageIndex=2; 1 A6 j$ V2 `7 }5 O9 m
mNode->SelectedIndex=2; 4 `9 b! u1 X8 l9 O- x" q+ H; r2 l
AddDirectory("A:",mNode); 9 _! Z! n9 B2 K8 e" a
for(int i=1;i<DriveComboBox1->Items->Count;i++) $ {% o6 |) G! o I5 k
{ ( j+ F) }9 t( k) J
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); % l/ n2 z# h; G
mNode->ImageIndex=3; : ] r- T% L3 I5 s$ q7 j
mNode->SelectedIndex=3; 8 c L! A e+ N2 A `& f+ v1 Q7 H
AddDirectory(AnsiString(char('B'+i))+":",mNode);
, s: K r7 z6 d" y9 E; ^}
0 ?) ?6 c7 [7 r+ l}
! T0 e, r& D- _1 E5 n//------------------------------------------------------------------------ # P6 b* r( m5 `& n6 q
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
* [7 }9 _0 v1 y5 R4 e{ ) S& [6 A" e' P
TSearchRec sr; : H: r5 {+ Z# p* y1 @- O& }" r/ v K
TTreeNode *mNode; * t& ?# J4 X2 A+ V8 h9 _6 G
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
; P8 \" T! {) s: t5 Q9 Q1 z( R' _{ $ j4 K& o* p5 {2 H7 s+ G1 M$ g
if(sr.Attr==faDirectory) * }/ ^" t# `! m+ J2 M
{ " ~8 O$ Y* c6 i
if(sr.Name!="."&&sr.Name!="..") 5 \1 ?" {, F! `) ?
{ ) _5 i# h3 j% U4 s5 n, x- `/ L8 s
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
) N' [5 |. c, f, @# T+ X/ WmNode->ImageIndex=0; ! q9 k: ]$ q! H% g
mNode->SelectedIndex=4; , X- i+ x' _% n* g2 {
// AddDirectory(path+"\\"+sr.Name,mNode);
+ y! U0 \) T7 z( @1 P! R} 5 C& s4 \* i, x3 S+ I9 ^* [: X
}
* u6 u S7 O6 M5 e, o8 b}
U7 Z k: X0 I8 `3 p- Fwhile(FindNext(sr)==0)
: c$ d3 i- R+ v) ?% z{
; \2 u6 u0 W" fif(sr.Attr==faDirectory)
- @ T" l) e3 k9 y{
8 K, l6 ~9 l X% z: n, ~; B, nif(sr.Name!="."&&sr.Name!="..")
) v5 k( ?' Y. Y4 B5 G, M0 K{ . ~: O% c+ r, a) ?& V+ Q( O: v) y7 j
mNode=TreeView1->Items->AddChild(fNode,sr.Name); " i( \8 }* S4 O, O1 d
mNode->ImageIndex=0;
1 t- A0 g, F: RmNode->SelectedIndex=4;
' F2 _ \- Q+ X) J// AddDirectory(path+"\\"+sr.Name,mNode); ' r* |8 g: I4 J; {5 `: M8 a
} 0 v$ w7 ^" T/ T. v3 o: ~' g" g
}
. { t. H0 F- e2 ^9 z6 X}
8 k7 u: C% I! \ |FindClose(sr);
8 U* l1 T& @0 U7 T2 m: U! z} 7 d. r# \) N+ b* R
//-------------------------------------------------------------------- 9 ~* A; Y6 Z$ _# l( g1 d* S
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
7 \- N- T8 {' |1 a7 V' }bool &AllowChange)
" s M7 F! c+ P{ ! Z! g% O7 b: ^" _
Screen->Cursor=crHourGlass; 2 a' m# R G$ _+ j2 y
TSearchRec sr; ! \2 f3 f' ]' D+ d
TTreeNode *NodeTmp=Node;
2 F6 @1 z5 Z2 T% x2 a. p: aAnsiString DirName,DirTmp; 0 k( d# K. V' ?5 t# Z& Q
DirName=Node->Text; 0 t7 i. U5 p1 g' H7 Z
for(int i=Node->Level;i>1;i--)
$ z, u7 R" o: `{
: i- N4 ]9 V a% PNodeTmp=NodeTmp-> arent; 2 U( L/ n2 ?0 I* b" I; w! E9 l
DirTmp=NodeTmp->Text;
- B2 ?# L" w% u& k4 B$ U% J, {if(DirTmp.SubString(DirTmp.Length(),1)!="\\") 6 p# ~- q: m9 `) u
DirTmp+="\\";
) @% G( [ z I! n+ P% G0 ?DirName.Insert(DirTmp,0);
4 b- l! h1 y/ d! l; s}
% V. _" _4 c# _( ~" q$ O6 h, a4 aif(DirName.SubString(DirName.Length(),1)!="\\") : {7 M* ?4 _# O! ?
DirName+="\\";
3 g m: F5 q7 ~" c+ [for(int j=0;j<Node->Count;j++)
! F+ o n! D d! j{ ; L! G! o% P4 A* ?( d8 R: E0 t, K
if(Node->Item[j]->Count==0);
4 m) m) N- ~/ M N0 {- N1 }: m{ # `7 y7 [9 o" u6 g. X6 _2 j% E8 R
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
) }9 y$ V. N. h& D" q7 P2 ?% p{ 5 b! i" K# P# s6 D
do
. Q4 v/ J- ~7 P$ ^1 ?{
3 v4 m; q$ t" Q, a//Node->Item[j]->ImageIndex=5; 3 X2 O8 Y# R1 K2 t
//Node->Item[j]->SelectedIndex=4; ( \2 O6 C2 @9 h3 ^" _6 E# U
if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
7 U! F# _" t$ m. E, t1 B7 f{
. s( C0 l' f- h6 L) _& `Node->Item[j]->ImageIndex=0;
! { Q |! M4 R. LNode->Item[j]->SelectedIndex=4;
6 {4 j. D0 t$ BTreeView1->Items->AddChild(Node->Item[j],sr.Name); # E' l$ S) K- h& s0 F% x3 y
} * w6 \& F& D# `4 q8 Y& y
}
. b } W4 Y0 r, M$ {( ^/ Lwhile (FindNext(sr)==0);
, X& r0 [" R' T# e1 X% h2 t8 `FindClose(sr); - t0 d! C$ h$ F# h. b A. I0 @
}
a, Y2 q3 v2 w0 }9 l}
: D9 e% n* l( l. g- S; |} - _( Z J2 S! ~' U
Screen->Cursor=crDefault; 3 o3 x I5 t6 m# e( {1 I& {# K
} |