|
( `1 Q8 Z# L' q8 o6 g! j
void __fastcall TForm1::FormCreate(TObject *Sender)
6 W1 l0 l) x* ^{
- C$ b+ Z& [* o5 ~% V% p4 uCurrentDir=GetCurrentDir();
7 N, q$ s( ^: ?" S8 V# o0 lUpdateTreeView(); 8 x& d3 S& o+ J s
UpdateListView(); 6 S. @4 E! E4 h# e( j
}
, f, @, E( y, N& P" ]//---------------------------------------------------------------------------
4 M& K( ]( }* J z3 U# Qvoid __fastcall TForm1::UpdateTreeView() : k0 S0 W) ^) }' j/ t& j
{
- V3 ], H7 O1 ?: a6 Z, GTTreeNode *rNode,*mNode; - w! D4 F6 j* b0 a; T, A
TreeView1->Items->Clear();
5 V1 y2 Q% ]! ~4 ]9 @* OrNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); 5 H+ g) S8 t& M- B
rNode->ImageIndex=1;
5 h) M B8 i( mrNode->SelectedIndex=1; # Y3 A( R" ^. i9 ^* N( x$ ^) Z/ e
mNode=TreeView1->Items->AddChild(rNode,"A:"); & s j( \. s- t. G0 C/ P
mNode->ImageIndex=2;
8 M; R( {- H# y! w! [' [mNode->SelectedIndex=2;
9 k8 U' v9 A( Y R; E; \0 ]" LAddDirectory("A:",mNode); : W V! c- ^4 C$ w9 A4 Q
for(int i=1;i<DriveComboBox1->Items->Count;i++) ; ~* V5 C6 h6 g2 E/ T+ ^! O0 p
{ # G+ a9 X) n1 P$ ]
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
4 l, ^! }3 P6 J2 e& P1 gmNode->ImageIndex=3;
" w' E! [& h. H" MmNode->SelectedIndex=3; % \8 ]4 d$ q; C8 S
AddDirectory(AnsiString(char('B'+i))+":",mNode); 6 I3 Q7 W8 b, R7 M- _
} 1 Y2 ~; S! ~0 E$ e( }$ {
}
. T' U5 y' D) Q# c1 m//------------------------------------------------------------------------
. U. M2 n, O' tvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
- T& n3 Q! h! G0 ?* N+ i& I{
4 r. [# O w+ y5 o$ y2 \2 V) xTSearchRec sr;
; Z: I7 |& x! v5 \0 cTTreeNode *mNode; : F* w3 E& @2 r k. @* K
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) ( x' R' V. |1 {% l4 T/ x2 C1 G
{ - k% N0 k2 F. I
if(sr.Attr==faDirectory) . w9 X' o6 B& O" [- H( D) q$ A. N
{ ' N \* p2 z+ o! l" n1 w
if(sr.Name!="."&&sr.Name!="..") ' m1 }$ b( r" D& P0 m& Y8 L
{
[ R$ U1 [8 r- I' s! k5 bmNode=TreeView1->Items->AddChild(fNode,sr.Name);
8 W0 O$ ~( h& T7 vmNode->ImageIndex=0;
; z0 q3 X- m8 \5 S9 s/ BmNode->SelectedIndex=4;
* e3 X2 `! v! I9 l* ~// AddDirectory(path+"\\"+sr.Name,mNode);
; O+ x m: W2 O8 i6 v} 9 I+ A8 Z4 r, {* ]6 R9 [- g- \' ]
} 3 _" y, I+ ~' a: ^( c
} 3 |. M9 F) U H8 p& w
while(FindNext(sr)==0)
. h, \7 Y o/ i& @6 a{
8 k( I; e! }& |; @% z* ^if(sr.Attr==faDirectory)
" C5 s0 `2 L! j5 o' T) l{ 4 A- ]) @. B$ |& _1 s0 j N
if(sr.Name!="."&&sr.Name!="..") 9 k, _* U) W+ i1 |- D. {
{
& n! W! a( L; `! h3 ?& `/ emNode=TreeView1->Items->AddChild(fNode,sr.Name);
9 H5 w2 ~1 g/ H. tmNode->ImageIndex=0; 8 }% k! h) J3 `' Y1 Q& J7 F' a
mNode->SelectedIndex=4; % W4 N" y* ^% s% J
// AddDirectory(path+"\\"+sr.Name,mNode);
# i5 o2 I7 r5 X6 c' J} # C5 m- \5 n; S3 g$ c' e+ _
}
7 e$ Z7 h$ m8 F' n9 @} 3 k. z/ L' t* _3 d5 e& y6 T1 e$ m
FindClose(sr);
: |( y/ r) E* _} 9 r8 Y2 v8 u0 T8 v- H8 o; B% l
//--------------------------------------------------------------------
6 d* ^) p3 D* k& Y$ Hvoid __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
3 F8 s. p! c- e: o' T! xbool &AllowChange)
: X2 _1 {: J e7 K1 q# T e$ J E. G{
8 t: ]+ x, H7 |% }4 l! \Screen->Cursor=crHourGlass; & \; K& R9 ~* I0 E
TSearchRec sr; % E+ k x& t# K9 i; A
TTreeNode *NodeTmp=Node; % j$ D1 L, n L. e. Q
AnsiString DirName,DirTmp; 6 Z2 V. q6 Z! R8 F! t; [( L z
DirName=Node->Text;
6 O3 t) {. W4 Pfor(int i=Node->Level;i>1;i--)
1 J( `! I F( Z) { ~$ R{
0 H% [3 P( Y& N1 lNodeTmp=NodeTmp-> arent; ! g: B0 N9 J. N' B. L& t
DirTmp=NodeTmp->Text; " {2 \! {4 A! f# L8 a
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
4 v( D- Z2 P, d. hDirTmp+="\\"; 8 I8 c! K" t b$ R8 j
DirName.Insert(DirTmp,0); ) E7 K) N8 R2 D: G) b+ E; d) b& G
} ' U: X5 r: d' t, \* f
if(DirName.SubString(DirName.Length(),1)!="\\")
( S$ w3 `0 G* ^$ b7 d9 VDirName+="\\";
, m+ w/ k. v8 m* Dfor(int j=0;j<Node->Count;j++) ) t9 y+ F+ Q# T8 _* Y
{ ) } m, ] D2 q" ~ ?5 ^2 T& j2 Z
if(Node->Item[j]->Count==0); 6 Y: }- d# Q2 p5 _! G+ M
{ 9 G A2 m0 t" L+ ]9 o4 e* I
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
( l, ]+ h9 ^8 W' t7 j{
6 m% q3 V6 m7 j- q7 Kdo
* f, c( {* s3 S9 ~{ 7 _: m5 D# p4 F; o/ @
//Node->Item[j]->ImageIndex=5; + S$ d/ O$ Q0 ]/ J9 @. M+ W
//Node->Item[j]->SelectedIndex=4;
8 i9 U( ~ Y/ [& H% P6 Cif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") - x+ v* J/ k5 K7 e D9 c* s9 L% ?
{ * b7 A3 R# f8 y* j9 A3 K3 X
Node->Item[j]->ImageIndex=0;
9 V. Q; Z3 a j6 P2 i8 }( Z/ ^) t( n5 g2 {Node->Item[j]->SelectedIndex=4; + u: p9 ~ R1 ~" P/ l
TreeView1->Items->AddChild(Node->Item[j],sr.Name);
4 R8 w+ D+ P# R$ n} : _) `/ G; B% [# {7 o" r% k0 F
}
$ P) m. s5 \/ P3 Zwhile (FindNext(sr)==0);
" G3 q; P4 b' W+ [FindClose(sr); & H9 R! u/ w. e7 L1 O. Z/ a
}
% ]& ~" a" {& \8 {1 n! ^}
) Q+ ?' }$ `. J3 f}
3 v: K8 j0 J6 h/ t* ^/ @& DScreen->Cursor=crDefault;
- I, D6 r: f$ h0 f) j7 `} |