|
; C- e( Z$ B2 M. B& d/ l6 I2 Kvoid __fastcall TForm1::FormCreate(TObject *Sender) 5 U" e; S+ c; w& a
{ 6 k8 d3 l7 B- H
CurrentDir=GetCurrentDir();
" x8 | D. [: m5 W3 k/ FUpdateTreeView();
' B, ^3 h; v4 T4 O9 J* vUpdateListView();
4 Z0 K$ p! t! i* r; j8 _' W} 4 o7 R0 F1 R: N/ X# J0 ?
//--------------------------------------------------------------------------- - T/ |0 g1 C* `7 w/ P
void __fastcall TForm1::UpdateTreeView()
: `8 _' f/ u* s& K& p: n- g0 F6 K{ ( L" U5 `, c9 h8 U: {2 j; l Q+ l
TTreeNode *rNode,*mNode;
9 Q+ z4 z9 { b8 \$ bTreeView1->Items->Clear(); ! q/ T6 x% }3 k. X" M& d# K
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
; S. P4 k& K& v8 KrNode->ImageIndex=1;
+ \$ X. c2 H, U( `* r2 Z+ GrNode->SelectedIndex=1;
, p% X; D2 k0 ]( G1 f, s, \mNode=TreeView1->Items->AddChild(rNode,"A:"); 0 m3 J5 f f3 L8 r2 z4 G
mNode->ImageIndex=2;
9 t! i8 s- ?$ pmNode->SelectedIndex=2; ( v( M& _* P# k; H( q: J. d8 V L
AddDirectory("A:",mNode);
2 A. w2 _% w8 v* [7 g. r8 i* ?; f& `for(int i=1;i<DriveComboBox1->Items->Count;i++)
5 Z) ]$ N$ t; ?, g C{ $ T0 d. w7 R4 @6 c, n$ e+ w
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
: Q3 x6 ?+ ?5 k6 LmNode->ImageIndex=3;
2 }( o' ~9 Y; z; ]) ~" vmNode->SelectedIndex=3; 8 d$ G( l. w) {
AddDirectory(AnsiString(char('B'+i))+":",mNode);
3 T! J' g2 B. `2 q}
& p& u2 m4 t/ ?2 N! }}
, m1 v0 A* U+ X V2 Y0 e z" s; y//------------------------------------------------------------------------
$ F. o- ]" h9 o: i# C) {void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) 6 k4 d& q: o" z5 ^2 ^% Y
{
9 l1 O6 V" g3 W. f: z- c1 [TSearchRec sr; Y2 A6 {/ ^. } g% \$ A ]$ a6 n2 S
TTreeNode *mNode; , }. T/ k( Y0 V+ y4 c! \9 ?$ X
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) 9 N( q. B* [8 ?
{ 1 d" J, _+ k! n# I# x
if(sr.Attr==faDirectory) 5 F( p& @' \ i' o7 w
{ , v1 I/ P' z" z' G$ s, C
if(sr.Name!="."&&sr.Name!="..") , J$ R5 E& l$ Q" v# s7 k
{
D2 \) F7 \4 wmNode=TreeView1->Items->AddChild(fNode,sr.Name);
9 a7 B d N# }- y8 [5 t6 X5 cmNode->ImageIndex=0;
& n/ s; F6 w! z1 emNode->SelectedIndex=4; - h$ b* L3 q! u5 G, g, |
// AddDirectory(path+"\\"+sr.Name,mNode); ) _& e( g- r- s( v( @0 b y
} $ t; b& f3 `2 s" g; K8 Y
}
4 g- f- {% l# J! ]/ y% I- W}
5 H' X# P4 c7 Qwhile(FindNext(sr)==0)
4 i# {: v( p1 }0 A6 i{ 6 b f. X9 W8 P2 M/ G
if(sr.Attr==faDirectory)
7 A! d4 M& K: d{ . I2 _3 ]* ?( `
if(sr.Name!="."&&sr.Name!="..")
, F3 P7 \% J! f4 M) j0 G; F- C{
9 h( l$ i- p w2 }mNode=TreeView1->Items->AddChild(fNode,sr.Name);
: X, V& J; q; _- s6 c' DmNode->ImageIndex=0;
) M; a, H' r2 ImNode->SelectedIndex=4;
( O* m( e5 L, `: h& W- p// AddDirectory(path+"\\"+sr.Name,mNode);
& F$ Q6 C6 P. k J( Z5 ^& F}
1 Q0 I+ ~/ v& m( P9 y H} $ x3 c3 _! c% B' j
} ; b; O4 N/ X3 s8 B
FindClose(sr);
+ ]9 ~ N2 u' U& C! B3 @2 t}
0 c, L& `. w+ j% F& B9 `1 U8 k//--------------------------------------------------------------------
3 W4 G: d4 J4 m4 W# ~9 s2 N' b+ g$ yvoid __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
# m) p `9 o3 i' i5 _bool &AllowChange)
2 g9 u v9 A- n1 d$ d( y{ 4 k7 x2 }% J0 I7 ?" Y
Screen->Cursor=crHourGlass; 5 O/ v% H0 z, ?# m K
TSearchRec sr;
; O) k5 `' V* L* _TTreeNode *NodeTmp=Node; " U8 l" A# W0 W! s1 X% V/ }
AnsiString DirName,DirTmp;
+ \) ], R k, `5 |9 v# D. LDirName=Node->Text;
2 ^+ z! v$ e$ j( }, }for(int i=Node->Level;i>1;i--) + J$ t8 O7 v T: x. A8 ? b5 \
{ 2 ]: r, Z6 D) l
NodeTmp=NodeTmp-> arent;
1 z: D4 q$ Z8 w* D- @DirTmp=NodeTmp->Text; . |/ @# H) L2 R# h/ a9 x
if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
2 y5 \, r8 b# {0 @) p* }( rDirTmp+="\\"; 0 O6 f4 i/ D' \2 x! K3 C/ f( v
DirName.Insert(DirTmp,0);
# |7 O" _: U" B* Y% b' e} ! p$ L) w, P$ R' W. @
if(DirName.SubString(DirName.Length(),1)!="\\") ! w5 m( C- U8 Y. M2 L P2 u
DirName+="\\";
k* p0 R1 p p' e( n. afor(int j=0;j<Node->Count;j++)
# M3 t8 C& l- M{
, d6 v# d- M4 u$ _4 I( Eif(Node->Item[j]->Count==0); . c/ |6 w4 B) ]- y5 |8 u
{
/ ]% V+ ]: e: @& g7 m2 K$ lif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
! ~% ^# d+ Y, F2 q. z1 a{
# r6 X. V5 P! c& y2 s @% m/ P) o" udo - r3 V1 n" A* G# L3 b
{ 6 D' \# t/ p# |7 S
//Node->Item[j]->ImageIndex=5;
7 b' ^5 r3 t" C1 `//Node->Item[j]->SelectedIndex=4;
& J* A$ }8 R: p: r6 E% uif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") , p: d! r& t' a5 A8 r
{
( [0 k: V7 G" Z$ RNode->Item[j]->ImageIndex=0; 4 N. z! x7 W6 v h& C8 p" Y: n
Node->Item[j]->SelectedIndex=4;
# x6 u9 H8 j! wTreeView1->Items->AddChild(Node->Item[j],sr.Name);
& w3 C6 b! q# D; L/ C" o9 |6 {1 {' l: E}
K! X+ \) W% Q}
: ~0 K% b( `. ^- Iwhile (FindNext(sr)==0);
% j! w9 n; E. P) ~: `. pFindClose(sr); ; a7 B- @) O* X8 N" A* m
}
+ m7 Z% W5 E: v1 [& K} 1 O! y; i f8 _ d
} ' q4 U$ y4 F4 l
Screen->Cursor=crDefault;
$ `/ I# L p) |' a9 b} |