|
! P* B1 \9 M/ X" l, D, Xvoid __fastcall TForm1::FormCreate(TObject *Sender) 1 ?' x: ^( ?7 M& W: T5 h# s! ]
{
; Q Y1 j6 ?! c! F$ WCurrentDir=GetCurrentDir();
0 ~+ ]9 ]$ Z: r' _+ Q- ^$ g" tUpdateTreeView();
! y2 S) I. s7 A, x8 P9 X* xUpdateListView();
+ C; {' T9 G" h% I/ E8 g} ! }) }0 {+ S. L# \ Q
//--------------------------------------------------------------------------- " G/ }+ c; D: L2 P: |
void __fastcall TForm1::UpdateTreeView() ) H2 D1 m' @9 }) p
{
5 l* @ \- A9 r3 pTTreeNode *rNode,*mNode;
4 l4 N$ d+ f$ x# a' \3 lTreeView1->Items->Clear(); 5 T, `* S; Q- s9 Y( M
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑");
: D: S: q% a# `' T/ qrNode->ImageIndex=1;
1 C8 D# p/ c. @5 B, b( T0 XrNode->SelectedIndex=1; 5 d2 Q2 Y6 k% h9 W' q1 Y
mNode=TreeView1->Items->AddChild(rNode,"A:"); / j _& E# N8 Z. l. J4 r C
mNode->ImageIndex=2; 5 S2 e& a6 i# d( w+ n% o
mNode->SelectedIndex=2;
# d8 X, Q) v) i; [( J0 r. \AddDirectory("A:",mNode);
0 Q( G/ x) `' Z4 \8 X# Ofor(int i=1;i<DriveComboBox1->Items->Count;i++) ' \- s! j( I3 v( ?/ m( y* o# b; W6 ?
{
: G5 Q8 H4 F3 T- V' {mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":");
/ H7 V P4 c. ]' F5 ?6 _% |mNode->ImageIndex=3; 9 f5 p$ L, q, s6 E9 N( \+ y
mNode->SelectedIndex=3;
R) n) h+ A7 j% C6 z. g3 [" XAddDirectory(AnsiString(char('B'+i))+":",mNode); $ H1 @6 y" `1 f! d/ J) {- i: J/ ?
} ( Z5 K S. g( @5 O+ X+ y6 w3 i9 |
} ) Z" e6 D+ A, d9 f
//------------------------------------------------------------------------ 2 v3 ^' ^2 m1 c" z; t. f
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) 0 B3 v9 z8 \1 e; R U) p9 `
{ ) z$ c4 y m7 x, C: ~
TSearchRec sr; 0 S$ M0 ~; X9 H( b$ W
TTreeNode *mNode;
) O% v1 `+ Y% H ^6 M4 h' Uif(FindFirst(path+"\\*.*" ,faDirectory,sr)==0)
' d& h2 @* ]5 {' D: p! b: f{ 0 o; {- u- U) J& V- v8 L
if(sr.Attr==faDirectory)
4 S1 N. U6 x ?% U$ U{
) U/ y: H2 J- d6 j0 yif(sr.Name!="."&&sr.Name!="..") h1 N5 G" x5 ?
{
3 N, z$ x2 `$ y' imNode=TreeView1->Items->AddChild(fNode,sr.Name);
5 u2 L! p7 T d- R; emNode->ImageIndex=0; 0 x* @8 j. w5 U$ f# [" N7 B
mNode->SelectedIndex=4;
4 [! |: G5 |8 D. U& p// AddDirectory(path+"\\"+sr.Name,mNode); % ]$ l: j4 Z$ j0 a
} 2 q% a1 f8 |! I2 \8 y
} + ^5 A: p, Y/ i+ V: r6 ]3 l
} 2 M) x2 E- d, X& Z" P: E
while(FindNext(sr)==0) " [ k1 ?( g6 j: t( ]
{
5 m, D" Y3 ~: _3 q" P2 P' Kif(sr.Attr==faDirectory) ; v6 ]9 _$ T: ?5 J
{ ! A/ l3 }$ P. Z% r6 J @/ E
if(sr.Name!="."&&sr.Name!="..")
; q9 D. w$ I V' d x{
, j; m. I7 w- @: k& l2 a+ b' `mNode=TreeView1->Items->AddChild(fNode,sr.Name);
/ f7 ?& E$ a4 |' j' j- u, }; _0 WmNode->ImageIndex=0; 0 g% E( `: ^' C# F9 e5 P$ @% l
mNode->SelectedIndex=4; ) a$ k$ O: L3 K* H, e) f
// AddDirectory(path+"\\"+sr.Name,mNode); 8 w1 T7 Z6 o; ]6 U( `
}
2 S0 X" j# N/ p. k7 Q3 l# ~# T9 Z}
+ a& w/ g* |* @ A; |' H8 c}
' K' Z0 Z W& k: |4 KFindClose(sr);
% z' @4 Y% H: ]* D* U- L}
4 r2 l( ~% e8 E) Z! [; D//-------------------------------------------------------------------- 8 [0 \$ `. R8 `3 {4 Q% e
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
/ G K$ H) g& ]4 p/ i9 ~" M; vbool &AllowChange)
& [. E; K: f- A1 K0 S- [{
1 Y" `: |# t/ M- A+ ?3 w mScreen->Cursor=crHourGlass; + M/ `; D# i. q
TSearchRec sr; & e8 b/ r. P, F' h) y
TTreeNode *NodeTmp=Node; X4 X$ ^& M5 @" t: E
AnsiString DirName,DirTmp;
5 i/ ~0 {& g5 Z+ V& R5 u' D% xDirName=Node->Text; ' Q, \% `3 j5 I! x. s$ }1 m& G2 _
for(int i=Node->Level;i>1;i--)
9 u9 u) W' [. j0 N$ }1 r% x{
$ o. {/ v3 n) B5 BNodeTmp=NodeTmp-> arent;
% n9 v- S' m' {DirTmp=NodeTmp->Text;
* Q3 p% h% ]8 iif(DirTmp.SubString(DirTmp.Length(),1)!="\\")
- i. B2 i Y2 R- g1 iDirTmp+="\\";
6 k( h4 I) N+ L9 V8 t" ^) ]DirName.Insert(DirTmp,0);
! H4 ] G9 t0 C: g1 I3 W& I$ r}
1 t8 a. \& G- ]( zif(DirName.SubString(DirName.Length(),1)!="\\") , Z0 } y. V# X" k5 P0 Q/ G
DirName+="\\"; ( A! I" [. A0 ?6 v3 _, Y) g7 |' W, I
for(int j=0;j<Node->Count;j++)
4 o& P1 Q9 l+ N/ W{
$ [3 _0 ?/ M; i( Q+ c$ _- gif(Node->Item[j]->Count==0);
9 `( m: O3 d1 `! g0 ?/ M) D% Y{ # }- c! X" E! @2 _: y5 t( _1 b
if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0)
# j. ^# D* |1 F9 W0 ?" P" D{
$ ~( l; _+ ^3 o3 y$ edo 2 x7 o# C% H) q J) [8 h
{ / {2 i& v2 _0 O- L4 t0 o+ h
//Node->Item[j]->ImageIndex=5;
1 d% t5 q# N% u) T5 m [//Node->Item[j]->SelectedIndex=4;
) B0 `* C5 {. L) Z L: w1 {if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..")
o- V' e& L& X5 t# Y1 g{ ; r, R2 H7 @! x2 c9 `1 [/ m
Node->Item[j]->ImageIndex=0; " i, G9 c# G0 U6 _4 k
Node->Item[j]->SelectedIndex=4; , x) ?. l; t; L. @+ i
TreeView1->Items->AddChild(Node->Item[j],sr.Name);
: x/ E0 a/ q* h, f0 g% d- @} * t O& t6 B5 e9 f O
} - t/ s _; M6 F8 c# ?
while (FindNext(sr)==0); , u2 J& h D8 O% ^3 b2 [
FindClose(sr);
1 Z# c. P- U' V: h; s) |} 0 n6 ]% Z/ m5 Y6 o6 l
} 6 _, w9 n7 M8 W$ }* o
}
: p6 A6 l* B, R* ]4 k; AScreen->Cursor=crDefault; ( d. _! w# W$ O2 u$ p
} |