|
8 N" u, m3 @ O5 W( [void __fastcall TForm1::FormCreate(TObject *Sender)
% P6 X w+ Y; T7 t3 z{
: ] b! x6 `! s h/ \" f+ L7 p2 _CurrentDir=GetCurrentDir();
+ q& g* H# [3 \, VUpdateTreeView(); 1 ^, x: t; G& R2 m
UpdateListView(); , N6 c4 J8 w+ N7 c# j; }# x
} ( W- g3 \. E' ~# d0 n
//---------------------------------------------------------------------------
: e1 k4 ~4 W" z7 a$ X: B8 lvoid __fastcall TForm1::UpdateTreeView() " M K+ @% B! Y+ k& @6 x
{ 3 ^) c6 U8 [" S; O+ Z5 n2 ?# n7 \
TTreeNode *rNode,*mNode;
# @7 q( D- q4 k( CTreeView1->Items->Clear(); 5 h& x* b1 M9 t e; p
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
1 X& B: r3 [! g* o( q9 RrNode->ImageIndex=1;
4 S( S3 `8 E, Q: Q5 KrNode->SelectedIndex=1;
' H1 `& j) R+ a1 S$ TmNode=TreeView1->Items->AddChild(rNode,"A:");
) N1 @) M6 g1 V7 E9 l) lmNode->ImageIndex=2; * |! I" W$ \1 |. q9 i2 q
mNode->SelectedIndex=2;
0 ?) j4 q. j* I7 c; e, X" w: n: h( m+ WAddDirectory("A:",mNode); 2 P3 n8 b7 C/ J) p2 @
for(int i=1;i<DriveComboBox1->Items->Count;i++)
- c( B- h" N8 Z. S; B8 `1 ?{ ' y, g+ a: z$ f& U8 F. ^" S
mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); ( [/ `' q5 e% G) C' O( M8 D U$ A
mNode->ImageIndex=3; 1 y! W/ v+ ]/ r
mNode->SelectedIndex=3; & u& M% I7 V5 U/ M2 i- t+ L
AddDirectory(AnsiString(char('B'+i))+":",mNode);
" y% T# k) x# X0 n} # D$ D$ H7 ]: ]3 r! r" z0 F
} + |: _ s4 z0 ^7 [' w( E. b: f
//------------------------------------------------------------------------
5 ^% C( G, d5 \" ?5 a2 m4 A) kvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) ! z& o' v7 G. e# v: z
{ + s9 b2 E& [. m' {# w, n* U+ e# _
TSearchRec sr;
0 G$ k* r* v6 _3 ]( oTTreeNode *mNode;
, e+ Z* J; i$ @if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
3 ?& _+ v' n+ a7 v1 ~0 S{
& o) R7 u( N# Kif(sr.Attr==faDirectory) 0 \3 a+ o) k9 K! c- L4 R$ J9 @* {8 i
{
( ^- L' Q) o& g9 Vif(sr.Name!="."&&sr.Name!="..")
$ e8 _4 P0 |5 A* a5 }0 [{ 0 Y3 j) V$ J3 e% H* m; F
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
" x0 O5 R% ] x/ MmNode->ImageIndex=0; 7 K, y* H! w# P1 V/ F2 v
mNode->SelectedIndex=4; 9 G; o4 f: W5 p( u( @+ g _4 @
// AddDirectory(path+"\\"+sr.Name,mNode); 7 x. I1 E2 T" u3 N
}
9 x( I# H1 `& @# R6 w- U0 W}
& X- f7 x! \+ w6 q+ {* V}
' H2 e+ q8 w1 i8 awhile(FindNext(sr)==0) . F+ k9 P! x9 e+ s9 M8 y
{
. B. D3 S* R; j! E9 x( R! }! Wif(sr.Attr==faDirectory) 5 _4 u2 |% F5 P2 t8 q
{ % Y |( ?" ?: o# U% \7 |0 c
if(sr.Name!="."&&sr.Name!="..") . @3 f8 v* Q( N- n
{
6 m N. S9 t9 |! @# H7 [( v/ xmNode=TreeView1->Items->AddChild(fNode,sr.Name);
5 ~: L# O2 i% D7 X% C" pmNode->ImageIndex=0;
# v- W) V8 w% [2 T6 l& dmNode->SelectedIndex=4;
/ v/ S; q0 n+ e- Q" f% [// AddDirectory(path+"\\"+sr.Name,mNode);
9 `* \8 u7 T5 p8 b# R; n}
) `) \9 _( _% J ^5 O% F+ _}
$ A# s! p! H" g( ?" e% Q& a}
" q+ u0 {: K* P2 L9 q5 N$ yFindClose(sr);
1 [/ o) I+ M8 p2 @. K p}
9 {1 ~, U6 E& N) Y//-------------------------------------------------------------------- ! I- D8 m+ T7 `& A
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, & g# `# x& d5 ?& n, s
bool &AllowChange)
6 o' z3 s t) F; i2 k' q7 H8 _* O, [8 B{
" d2 h* K6 _7 s$ k; o+ WScreen->Cursor=crHourGlass;
" q1 l' x0 d- q2 ?- F! eTSearchRec sr; # G, S9 ^2 y$ [7 A) W+ f/ b2 B
TTreeNode *NodeTmp=Node; $ l3 i0 n. ^7 p* \5 X6 a
AnsiString DirName,DirTmp;
# x, L9 ]3 V- R: ^' q! t4 Z" uDirName=Node->Text; : [& H) a' f* x+ J9 i) u k
for(int i=Node->Level;i>1;i--)
! {# _" g1 k7 @{
) I2 ?7 x9 V' m& f8 P) Q2 |NodeTmp=NodeTmp-> arent; v* B8 N& {! F" F) D- z" N6 o
DirTmp=NodeTmp->Text;
: |1 b- l& n/ [9 wif(DirTmp.SubString(DirTmp.Length(),1)!="\\")
" @5 Y; l9 V1 x' o$ d5 QDirTmp+="\\";
* i: i1 B6 M# z: V' \4 mDirName.Insert(DirTmp,0);
$ j8 c4 |& z6 B/ z} 1 q; B+ N( t' |* R: K
if(DirName.SubString(DirName.Length(),1)!="\\")
# d. }' P h' XDirName+="\\"; 5 e9 P0 h6 a$ C5 k1 r
for(int j=0;j<Node->Count;j++)
* A8 z0 ?, h! k. X, a{ : Z* l( Q4 a. ~2 r+ n* d0 p" I
if(Node->Item[j]->Count==0);
7 u2 r! s: C/ Z# `{
6 X2 K2 L( B2 s- k) H8 ?, a# j$ gif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
/ D4 s8 |0 n! \* s{
2 T5 |+ T* Z# o1 _do 5 K% b$ O, l7 _' D
{ $ a% X* e5 z5 O
//Node->Item[j]->ImageIndex=5; # N q, P( ]1 Y. Q, P/ Y: C! e# o
//Node->Item[j]->SelectedIndex=4;
1 Q/ `" W- `8 mif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
1 C q- t6 j2 t9 i" B- W7 j6 J+ A, V{
7 ?- i m% y7 W, z+ iNode->Item[j]->ImageIndex=0; 7 p' T# b7 f! a" ~0 i; a" @
Node->Item[j]->SelectedIndex=4;
' ]( D) Q# q" s, r" D; [TreeView1->Items->AddChild(Node->Item[j],sr.Name);
D/ i* G! Z8 W' U* {6 V# _' w+ v}
1 t3 X3 x. u0 M4 c7 _9 p. t, h N. n}
6 }2 A, V6 `4 owhile (FindNext(sr)==0);
1 s+ U* F) X/ b0 \7 C' ~8 eFindClose(sr);
/ A2 q ^& Y+ j& g; z) I5 s3 \} / d4 ?5 T6 W5 T7 w- l
} ) o7 C4 i5 u/ M I! f8 I9 P
}
- h3 a8 J6 S: X& T5 @Screen->Cursor=crDefault;
% i- L8 m5 R6 [. j4 c) r# n3 m} |