数学建模社区-数学中国

标题: 用TreeView浏览目录 [打印本页]

作者: 韩冰    时间: 2005-1-26 12:30
标题: 用TreeView浏览目录

6 d3 U+ \3 y% b7 m void __fastcall TForm1::FormCreate(TObject *Sender) ; {/ d& A; H$ L { 1 _1 j. m2 ^' T2 ~ t O$ |CurrentDir=GetCurrentDir(); & D. e; O6 `8 Q UpdateTreeView(); % A W3 i7 O7 x# B6 jUpdateListView();

y( z/ q6 Z# T; i8 I

} " _6 W _+ a$ E1 Q3 z //--------------------------------------------------------------------------- 6 C' G$ Y) c) ]" j0 G void __fastcall TForm1::UpdateTreeView() 1 N2 y7 G& r/ l8 t) b{ 3 N( J. e: g i, _+ ?0 WTTreeNode *rNode,*mNode; * {# A% ~4 [4 ], h$ K" M6 ETreeView1->Items->Clear(); / S+ G2 g7 e; ^rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); $ V0 H0 Y# ^; UrNode->ImageIndex=1; 3 W( A$ |) Q8 brNode->SelectedIndex=1; - d9 ]2 R, z8 Y! v8 L7 P/ J9 {) q mNode=TreeView1->Items->AddChild(rNode,"A:"); * \! T* B. q( j6 G n6 | mNode->ImageIndex=2; ( }5 s% W# F0 a( I. o mNode->SelectedIndex=2; 8 g$ r t- B( ^" X7 T- [1 l AddDirectory("A:",mNode); 7 M" C! P1 v) f: o8 kfor(int i=1;i<DriveComboBox1->Items->Count;i++) ) z# }/ \- {' U+ S, { { / k$ k% u) t! K+ @% v4 PmNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); + \# ^' Z$ V/ KmNode->ImageIndex=3; 9 b- {5 m2 e Y& E1 ^& H! h+ a# smNode->SelectedIndex=3; $ l: P( }% |. I# y" P1 uAddDirectory(AnsiString(char('B'+i))+":",mNode); # m5 m. J' v o* F- a( H } : `! k) H! i6 S' @ } ) k% S+ M; L/ N# u6 J9 j //------------------------------------------------------------------------ 8 ? x( i; O" o9 f) n void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) , ~- M& g0 v, o& @- f { ( O2 K0 T4 B# R TSearchRec sr; & G9 `" K; ~; v9 M TTreeNode *mNode; * V" f6 T ~- O' q5 s3 ]7 J8 y+ o" l if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) 4 J: m$ E) x' Y" S/ a/ Z { 4 T2 D2 a) {8 p3 E1 M% G, {, ?; ^ if(sr.Attr==faDirectory) 0 Y( N9 K$ R4 {* ~0 O$ `7 }{ ( N9 P+ m1 v/ W( @if(sr.Name!="."&&sr.Name!="..") 0 M4 y7 Z {8 G1 f) l { 1 R5 O4 [2 B* h2 b- w mNode=TreeView1->Items->AddChild(fNode,sr.Name); 7 f" Q$ j2 P) y; M. ]* x" YmNode->ImageIndex=0; 1 ]! L! M% j) i4 a4 M mNode->SelectedIndex=4; , h- G" F3 F* a) ]& H // AddDirectory(path+"\\"+sr.Name,mNode); + }) `7 o( s$ X0 s0 a } # r4 I+ ~, ?( p- d! r1 j } / {, x: g( N. j4 \* f6 B } # u; s6 ]; e1 r6 s- E$ V while(FindNext(sr)==0) 5 E6 \+ d6 m, r3 x$ w- N{ ! }7 B" R9 N5 o0 T1 Mif(sr.Attr==faDirectory) $ r. j# c# d4 P) u0 \{ ' q5 V- B! w& U/ T! t# B! uif(sr.Name!="."&&sr.Name!="..") , ~8 \, c& N K2 y+ p2 x' d& X{ / K8 y% c: l7 d; f/ S, e& BmNode=TreeView1->Items->AddChild(fNode,sr.Name); . B9 s' I3 M+ y/ n mNode->ImageIndex=0; - @9 e9 \% ]8 a3 L mNode->SelectedIndex=4; / Z7 _ ]0 [; c6 Z* f! E // AddDirectory(path+"\\"+sr.Name,mNode); " W9 F! k5 q5 \; F# Y} + j( o! G n; z6 r/ D} $ T7 r- h) Z0 i } 7 w% h7 G7 x9 _8 ?- r4 EFindClose(sr); 1 \$ c* P9 O4 M3 F* L }

; Q! E4 }8 D; Q4 a

//--------------------------------------------------------------------

, p$ R, ~! m Y, r6 T2 z; U

void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, : t8 b/ t+ F F1 ~$ Ibool &AllowChange) 2 {' O4 E4 k; v) q. ?5 E, L { * q! `- N! U3 U$ g! mScreen->Cursor=crHourGlass; $ J+ z+ @) t0 x0 Y5 aTSearchRec sr; , w; F" |9 m" b# w$ f- s# p TTreeNode *NodeTmp=Node; , E( P- H" ?! y% ?# R AnsiString DirName,DirTmp; - {3 V1 X* V. d4 r/ CDirName=Node->Text; ( }/ m) H7 U# x& `+ q- cfor(int i=Node->Level;i>1;i--) 9 e' B6 y$ L; |2 I { 2 \) F2 m, A- S" R# U, z w+ b NodeTmp=NodeTmp->arent; ; l0 h- j; m) f DirTmp=NodeTmp->Text; ; r# K4 ~9 y' h0 gif(DirTmp.SubString(DirTmp.Length(),1)!="\\") 1 ~; h) i( L; k. w0 _3 A# e. mDirTmp+="\\"; 0 w! z0 v9 f$ o$ ~3 _& M0 B' JDirName.Insert(DirTmp,0); ) ~9 a& z7 F* T# K9 |8 j, c; x9 {( e} 7 [* z3 z7 }" ?7 _" {if(DirName.SubString(DirName.Length(),1)!="\\") 1 Y0 v8 e( z/ o8 ?0 j! DDirName+="\\"; & U* M. Q. @/ i. Mfor(int j=0;j<Node->Count;j++) 7 d' s- [! H" R4 k { . e* W, ?4 m2 \" D if(Node->Item[j]->Count==0); ) o2 {, i0 q$ \: @ L/ ~{ 2 I' d' T3 V9 ~8 d0 Rif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) 9 b/ j8 \' a* R9 ?+ A { 7 w! Y! j, o( Wdo 3 n* _' @2 V& s; T4 d{ + q7 }( e3 t; w6 A& C //Node->Item[j]->ImageIndex=5; , K0 `3 z( g' w2 P* \+ r1 e" e //Node->Item[j]->SelectedIndex=4; , G! r, Q' M# S% F5 l) u- E if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") 0 D) E5 K. }3 ~" [1 A { / m7 F! f+ X; zNode->Item[j]->ImageIndex=0; - z3 |' {3 `0 l# h8 }4 W2 A* vNode->Item[j]->SelectedIndex=4; ; S0 ~* i, e5 w' n1 h, u; v TreeView1->Items->AddChild(Node->Item[j],sr.Name); 0 x5 ]3 e+ n7 v c" P# F3 O} : k3 M4 t6 Z ?& u} # {5 M9 O; H$ Mwhile (FindNext(sr)==0); ; }& @7 }4 G* d/ S% P0 [- NFindClose(sr); # u! j' |- r8 l- h} 9 E& s* f+ v+ ?} ' F, d8 I/ W- u$ a} + Y4 J1 `" {* i3 o/ B Screen->Cursor=crDefault; + l6 n0 l P1 U; o}






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5