|
0 ~+ g. j; b! z) L5 M' s$ v1 @2 Kvoid __fastcall TForm1::FormCreate(TObject *Sender)
, |1 e/ w2 f$ Z1 t# C6 R0 F{
+ e9 B7 s% `! x! ~7 RCurrentDir=GetCurrentDir();
. U. p2 I+ r& C% e- ]% qUpdateTreeView();
& C3 U" z6 _* H% s$ Y2 ^9 ]( s) ^UpdateListView(); + t1 T, @6 Y, i1 S* V' }( l; S6 C4 e
}
0 E. o& C& `1 R( y//---------------------------------------------------------------------------
- j6 U- \) w* U, L: q9 u! Xvoid __fastcall TForm1::UpdateTreeView()
2 i, M8 A; e3 ~; H6 s9 b7 e2 w6 O{ : X& n! H+ E- s1 }5 h# P5 C
TTreeNode *rNode,*mNode;
0 c; u1 j( E ~* s8 aTreeView1->Items->Clear();
) Y2 C" s! W3 r, Y# grNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
1 p! m! v( W, ~2 | X5 B& DrNode->ImageIndex=1; ) ]: W( o7 H* f) m
rNode->SelectedIndex=1; 1 d B, w6 t/ `8 U4 e! `/ g
mNode=TreeView1->Items->AddChild(rNode,"A:");
4 b3 _8 Q7 t$ Z* I. `/ RmNode->ImageIndex=2;
& w. _* x" X9 wmNode->SelectedIndex=2; ! C/ X D& d/ g U
AddDirectory("A:",mNode); + M* N9 j' o6 k) k+ Q9 P
for(int i=1;i<DriveComboBox1->Items->Count;i++)
. e+ H- c! ], Q{
- H7 l) Q# v* G( a: \. a% tmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
; H+ k2 ~& p0 D# lmNode->ImageIndex=3;
3 W3 O( N% K; l$ V. K$ l" \mNode->SelectedIndex=3;
2 O6 p* d% K' ^# i- p- K$ }+ d7 I) B* IAddDirectory(AnsiString(char('B'+i))+":",mNode); 8 N' { d9 n# |3 ^ s; o
} 0 k( ^4 M* U5 k- ~: b
}
) c& a8 y q9 R0 C' }$ S//------------------------------------------------------------------------ 9 Y3 d/ V. @7 K H' j
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode)
* F \, j9 t# I2 _3 a{
/ e% E; \5 E2 aTSearchRec sr;
- i g2 _& Z7 u! e2 i# y" I7 eTTreeNode *mNode; $ L, L& w( _) [8 C
if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
1 z' J" k U8 V4 e- P& M- v- ~1 ~{ ' h: c! @- B# h3 \4 w" |! Z# N
if(sr.Attr==faDirectory)
9 `. o" p* N6 o! p; b{ . u1 _5 ]: C* R; E$ v, u1 N
if(sr.Name!="."&&sr.Name!="..") 5 `$ f9 _" L; v. I% y
{ 2 l6 y& p$ i& Y
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
2 S3 b" ?: M) ]mNode->ImageIndex=0; 9 u1 U( i' o2 @$ T) ~; s/ l
mNode->SelectedIndex=4;
7 N: _; f0 p$ `8 g- {& s. \/ z// AddDirectory(path+"\\"+sr.Name,mNode); ' t, L8 q$ _4 h& e0 G8 Q
} $ f3 X+ l: {1 a! r" `8 Z$ j
} ' n2 ^/ E. A/ {+ P
}
1 I7 E( O% }& w, Rwhile(FindNext(sr)==0) ! x( y( H+ r2 D
{
1 p, {* `( E5 [if(sr.Attr==faDirectory) , q+ e0 T9 x( z2 R6 ?2 U3 e
{
& C, G, {( O7 z- Q) F; Xif(sr.Name!="."&&sr.Name!="..") 4 o3 F9 N' B2 j, ~/ e8 Y* p
{ 3 M2 r% O6 U5 A& U1 }# L& M K
mNode=TreeView1->Items->AddChild(fNode,sr.Name);
4 o5 t# E+ B7 I- e( f4 M+ k: N- X6 WmNode->ImageIndex=0;
. q6 L# x9 w+ L' _. H) [; pmNode->SelectedIndex=4;
5 C: U; F8 e. X; Z) ?/ Q// AddDirectory(path+"\\"+sr.Name,mNode);
& o$ T* Y; l. {7 C. |. Z} , W* b w+ @4 d/ Z l3 o* D
} , [0 P ~; y: B9 K/ x
} 4 C7 ?+ u7 ]( V5 L& ~
FindClose(sr);
- U2 ^. A3 q( A" y0 z}
2 Q" B6 S- D* L% ^) R1 m* v8 A//--------------------------------------------------------------------
) w1 j3 \3 y; [" ?void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
& {" v- [$ x+ u- N. Zbool &AllowChange) & \# c1 B/ q( y: i- [
{ 4 s+ M! v( N! L! ~ J& J
Screen->Cursor=crHourGlass; / K" U! R+ r0 w* h: {; W& T8 {6 |
TSearchRec sr; 6 F H, ^0 F) [" m8 z% O, Y
TTreeNode *NodeTmp=Node; " ?/ S& S! Y5 D1 ^0 U
AnsiString DirName,DirTmp; # s5 S) h/ P, H: l1 [. E7 j
DirName=Node->Text; ) @6 O! ?& y4 m* r" D1 ~
for(int i=Node->Level;i>1;i--)
+ W+ v- h7 a* A. b6 |6 z: `{ " S' ?! D/ b: [, G$ a. ~3 f9 e P
NodeTmp=NodeTmp-> arent; # Z, ^" @ Z& \/ V2 U; t
DirTmp=NodeTmp->Text;
8 t1 K! h& i3 \( \6 D3 ]& w) Y. [if(DirTmp.SubString(DirTmp.Length(),1)!="\\")
2 g. B( `( L+ ?6 \DirTmp+="\\";
8 s% k. K+ i9 n! t4 t; PDirName.Insert(DirTmp,0);
H* T9 G+ G @9 m _! u} ! X+ r8 V- a/ C. m+ c& m% _
if(DirName.SubString(DirName.Length(),1)!="\\") * O5 F, \% g! L! Z: C* j' `' H9 i
DirName+="\\"; - t- \3 S4 _ m" F% ]: O
for(int j=0;j<Node->Count;j++)
0 Q& X. i1 o- ]3 v9 F{ ) `, Q) g+ t8 q' }0 M
if(Node->Item[j]->Count==0); : M3 J# f0 M2 r" M
{
1 y7 w l: t/ G2 w3 [7 A+ `& @if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) : u2 O! s/ }5 h; ^6 i, V. {# @
{
8 l f; v. A* n, Z4 Ndo
0 Z6 k# |. p9 |{
$ q: m9 F( ^) A6 H" Y* E, P//Node->Item[j]->ImageIndex=5; : [) v2 M/ }5 \- v: K, n
//Node->Item[j]->SelectedIndex=4;
1 \+ B& @ \2 v4 f" Vif((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
4 H! o# Z$ P( n$ T{
. w1 n1 ^0 g+ G, `4 a' N, Q3 lNode->Item[j]->ImageIndex=0; ( I5 t+ m' M7 C/ ~1 Y8 f
Node->Item[j]->SelectedIndex=4; 7 G% [! V2 u6 C0 J6 S
TreeView1->Items->AddChild(Node->Item[j],sr.Name); 1 O% L# F, |5 |+ W; ]( G2 H. l
} * E+ y0 |$ p- \
}
. L* ]# y' \* B$ U" \5 b. gwhile (FindNext(sr)==0);
2 ]% J$ i' U1 pFindClose(sr);
8 i4 f0 I) n( @# f}
$ I- p& R6 v& N" S; \}
1 L2 r9 y, s6 x}
" O+ Q7 E9 f# ]1 w- @: T+ F3 s6 x+ |Screen->Cursor=crDefault; 6 ^0 R K& X+ L8 y0 y! l1 K
} |