|
/ x3 T5 |( l, Z/ b5 K
void __fastcall TForm1::FormCreate(TObject *Sender)
9 D$ ^* k- U" d, n |( q4 J{
" d' }+ N9 z# }" ~% G! W+ A' y6 K" ~CurrentDir=GetCurrentDir(); 1 b6 K7 g- g/ ]
UpdateTreeView();
7 J. R( @8 S- A3 Y6 J5 \! ZUpdateListView(); - t, C" w& ?( U8 ]# f" m
}
: {7 x5 w/ s# ?//---------------------------------------------------------------------------
( A7 x# i# v/ B5 _/ _% ^- ]* |void __fastcall TForm1::UpdateTreeView()
7 [# m( Q/ `/ [; d{
& v1 f2 o7 c4 F7 A8 U5 E6 M' @TTreeNode *rNode,*mNode;
6 o: u' Y1 d6 ]2 y0 a4 |TreeView1->Items->Clear(); $ v( @) y; o/ M* @2 f$ l0 b7 O
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
* [5 l$ d2 P0 v$ ZrNode->ImageIndex=1; ! T# P( n; l; h# C' ?6 Z
rNode->SelectedIndex=1; 0 M9 b6 m3 W2 |/ m2 R, e
mNode=TreeView1->Items->AddChild(rNode,"A:");
& s( j( a# Q$ T9 B, W% o0 N4 dmNode->ImageIndex=2;
: Y$ ~9 y$ ]' Z+ @* `/ R8 NmNode->SelectedIndex=2;
+ J5 o$ z4 h. Y6 \0 n+ [AddDirectory("A:",mNode); * |5 d& _. i: h8 g, ~3 f8 N
for(int i=1;i<DriveComboBox1->Items->Count;i++)
" } a0 K/ z- R- x2 G. Q{
o3 D! ?" G* y0 R& Q4 E/ MmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
. H. I# Q4 W+ `0 h0 lmNode->ImageIndex=3; 3 ~3 g/ R1 X9 J- l
mNode->SelectedIndex=3; : X; E1 W, W( J5 D, g( Q( a" R. s5 w
AddDirectory(AnsiString(char('B'+i))+":",mNode);
) e) ^& n ]* ^} * ~, `$ C2 C# J: [* {) I9 B6 y% c
} ' m2 }4 q2 E+ Q5 c% Q+ F2 h* _
//------------------------------------------------------------------------ $ @% P) b: \- s# u
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) 1 G% [8 S5 p- A+ ?
{ & L1 i+ E' @+ f% P
TSearchRec sr;
. j% y$ W) [# m. ]% H2 L1 W7 DTTreeNode *mNode; B* X0 o) O- x: @6 F& {5 I
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) & d# e! _# T6 J# r
{
0 {3 W1 t, j( jif(sr.Attr==faDirectory)
% z( F7 j2 q4 r/ h- h2 i$ E' K9 m{
5 W. W9 u I. ^' O* t( A% h9 Z9 oif(sr.Name!="."&&sr.Name!="..") $ I% R( a% H1 c5 a/ G
{ 2 Z: l, o! _: v- W- s% n
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
}) ^" k- {0 j0 K# _mNode->ImageIndex=0; + X4 o" x" {) R$ z5 `
mNode->SelectedIndex=4;
9 X" e- n" R4 h }# O1 T( ?// AddDirectory(path+"\\"+sr.Name,mNode);
# M3 s& s8 E6 @} ! t* }. O' |) ]3 G; K
} 8 d, u; d! |; F7 N7 x7 x s
}
; N- B( c4 H& G5 Zwhile(FindNext(sr)==0)
+ I4 }. l- @9 p3 `3 l8 K{
# R8 |8 o: V( |" t0 y% \) [if(sr.Attr==faDirectory)
: }% N. d+ c5 k0 T( G, M{
6 d( ~+ i8 N* Q: F9 sif(sr.Name!="."&&sr.Name!="..")
7 i3 O6 H3 ]: @% g{
3 i# ?# `( R8 X/ I& F& ?# F, NmNode=TreeView1->Items->AddChild(fNode,sr.Name); : @) V9 T% a$ |! |3 g0 l, [" b
mNode->ImageIndex=0;
3 F; e$ j3 i& f* R) n: T; RmNode->SelectedIndex=4;
& A) j5 E# T. V// AddDirectory(path+"\\"+sr.Name,mNode);
- `+ k6 _: L- j4 k- k} * d; ]9 c' k% T! J& u
}
. E/ n% u3 N. C3 J1 B; x, I} " X9 Y% Q' k- Z# \4 {2 b% z$ N
FindClose(sr); ( F6 Y; ^2 j. G9 D
}
# b- s; J" Q$ ^; H( P! V//--------------------------------------------------------------------
+ Z! j' V) f" b; |9 hvoid __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
6 P' M O, w6 x- Q& I5 sbool &AllowChange) 0 @+ Y6 X1 h; b8 i9 O) s% w
{ % H5 u" x0 X" U- b* P+ {; P
Screen->Cursor=crHourGlass; , S6 t( O* c1 E4 p
TSearchRec sr;
" R4 k& O2 q3 h, ~% ~& eTTreeNode *NodeTmp=Node; 3 O; O. W/ [. [5 O" l) w1 u. R- v
AnsiString DirName,DirTmp; ' i& G9 U7 F. I* I$ F2 E0 v4 h/ |3 D1 u- s
DirName=Node->Text; $ s. C- ~( @5 p; n% {0 C* P( A. o/ i
for(int i=Node->Level;i>1;i--)
: P9 Y6 Z. m, x1 E0 a! Q{ $ s+ n& l- \* G( \% X
NodeTmp=NodeTmp-> arent;
1 S0 i; j) a7 P: F, |* T7 dDirTmp=NodeTmp->Text; 0 x" } K" L7 [8 n: v( ]
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
% t* s* L. U; V l" k: vDirTmp+="\\";
# _% ^8 X, }4 ^" u# f/ Q9 gDirName.Insert(DirTmp,0); * Q. C+ ~/ Z, D7 b7 e/ F& A
} ' ^" k5 Q9 h1 p v2 n5 P$ b( q! p
if(DirName.SubString(DirName.Length(),1)!="\\") . K( [' A0 D' W- x- h
DirName+="\\"; 9 X3 k$ _* b& f
for(int j=0;j<Node->Count;j++)
W" a! w3 X5 \3 A. B2 P4 e{
3 A q' q+ i8 i& O7 S0 Pif(Node->Item[j]->Count==0); " r: f; N( B" w2 m5 n
{
& O' D' Y$ @7 [+ P; r! aif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) 2 |/ T) _& b6 p3 {& w5 r) N& }
{ 2 O2 G/ [4 y s
do
. Y [8 g" e- R2 O: w{ % p! Q6 f' Z( S/ J: v9 H# A5 d3 C
//Node->Item[j]->ImageIndex=5; + J/ [. C6 C) S- j
//Node->Item[j]->SelectedIndex=4;
/ ~1 {2 J8 c; w7 gif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") ) u! J @( |, I0 _; I" u
{
0 D) }. j: i! k% F8 s- ]4 |4 n% ~Node->Item[j]->ImageIndex=0;
% W8 G \- I& G5 b+ B+ {Node->Item[j]->SelectedIndex=4; * J% D( [7 I+ z" r
TreeView1->Items->AddChild(Node->Item[j],sr.Name); 3 @, p- D8 Y3 M2 d+ H: g
} p1 A, v4 [- P) N% \5 E1 T* J
}
4 z* @; \4 V( f$ A8 Iwhile (FindNext(sr)==0); * {, I! a# H9 ]* B1 p5 Q) Z
FindClose(sr);
% e7 t; _% L! ^3 K1 p0 o b! G. ^} / x# w5 ]: K; Q, A) I: V
}
! |$ H& V* A, U! w( w! O+ z} " T: b8 |# s7 p5 z( ?
Screen->Cursor=crDefault; 5 [, i. \$ E- i& ~' n3 s
} |