数学建模社区-数学中国

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

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

3 |2 Z- G9 G4 ?% _7 _5 }& n void __fastcall TForm1::FormCreate(TObject *Sender) " ?' h$ c3 b2 y: C5 w- i{ 1 b) P6 }- l. F: b9 H, z8 w: w CurrentDir=GetCurrentDir(); 1 [+ s- R; I) t9 GUpdateTreeView(); - i% o. m4 G6 ~+ k. r' p UpdateListView();

6 D+ N+ _4 V8 \" n* e

} 3 L6 Z. z) D/ d //--------------------------------------------------------------------------- , _1 |; f! J; [" k void __fastcall TForm1::UpdateTreeView() 4 U4 m( n V+ j# b0 }0 ^ { 5 m1 c) I5 N7 A5 Y) A" wTTreeNode *rNode,*mNode; : t* h( z, J3 R, G3 ]: ~& ETreeView1->Items->Clear(); % r. a6 E" C& ?; @: a4 [1 E$ OrNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); ( E5 Q( y/ u6 R" v, g' rrNode->ImageIndex=1; [ X n% W8 U$ N# b$ ` rNode->SelectedIndex=1; 2 ~/ o7 w9 s8 u% J. H5 z mNode=TreeView1->Items->AddChild(rNode,"A:"); - f! |3 G/ |0 U: jmNode->ImageIndex=2; 1 I+ d+ h w$ H+ @% A: p% zmNode->SelectedIndex=2; 1 I0 C: Q; c- J* O' ]# iAddDirectory("A:",mNode); * E0 G$ u+ b) p, U. a& c" f, y s( k0 Hfor(int i=1;i<DriveComboBox1->Items->Count;i++) $ P9 l% N' D7 S1 A+ U { 3 G0 @) t; M3 G* Z" v7 p mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); , Q3 F7 C1 Q8 w mNode->ImageIndex=3; : {- B0 X; B! y$ ?mNode->SelectedIndex=3; 7 P+ z' D5 n, Q' B AddDirectory(AnsiString(char('B'+i))+":",mNode); + s! q0 U2 f6 ~. L) c" f} A9 R0 E# ~' q" F0 X; ~2 V9 ?3 p } . i" \3 `; J! }0 M% B+ O1 ]" V //------------------------------------------------------------------------ & i8 i" s4 ?0 Z* N6 n, Gvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) $ {1 k# \9 }( p5 |{ 3 o( I0 b8 E9 D- A/ _ TSearchRec sr; " H6 V7 H7 T& r* ]' CTTreeNode *mNode; O. u+ ~9 [4 D( u2 M+ i" ?if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) 5 z! t1 d8 s0 D { * c* H% B7 J# E% n( R: _4 n if(sr.Attr==faDirectory) ' g; [$ @, X8 H0 ? { 4 K9 ?2 t9 B- t0 W! G$ X3 Jif(sr.Name!="."&&sr.Name!="..") 1 B: j4 P6 O4 @# k0 ^7 ^{ 1 T6 @8 P6 C# I( x* J mNode=TreeView1->Items->AddChild(fNode,sr.Name); 2 }& R1 M( S' e0 L& d+ KmNode->ImageIndex=0; % |$ ^2 P! F, @; Y' b& k mNode->SelectedIndex=4; ) [" n; ?/ l1 A; N // AddDirectory(path+"\\"+sr.Name,mNode); 8 @$ v* n' R' z2 ^} 3 K! T6 G/ d! |- Z8 V} 3 W2 d; t- Z' \( \) G# S/ Z" u/ R } 3 k/ K6 H* w) M2 V! b% _while(FindNext(sr)==0) $ K$ Z3 Y) x& o) |% n1 t { & d; {- n; S4 }; H& b if(sr.Attr==faDirectory) 5 v, a, L R$ C! n4 Z" s3 S; i { : N* t7 A6 |+ Yif(sr.Name!="."&&sr.Name!="..") # n2 q7 y; J- [1 k; O D3 @ { ' X* `4 m$ K+ G- T* Y V( XmNode=TreeView1->Items->AddChild(fNode,sr.Name); / u4 s6 p: x6 ~* S* W5 T, @' M! WmNode->ImageIndex=0; 5 k" ^3 p, ]4 T" CmNode->SelectedIndex=4; 4 q$ v# T3 T+ r5 I( A" l4 V // AddDirectory(path+"\\"+sr.Name,mNode); + ~' M4 p7 G# Q! k( t0 d/ f} 8 f. ~" @8 f" v! G0 w3 O8 k } ) s6 S( R3 P v } $ |! ?4 x* v; R FindClose(sr); ) v' T. j) _6 x$ q8 c }

; w/ s0 j2 d% ] C0 a

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

0 M; H- ^( O; G4 }

void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, . j. t5 ?( Y9 a4 B5 p, {! C bool &AllowChange) # \1 u7 G8 l; m6 U{ 1 H( q& l6 X z+ x0 I Screen->Cursor=crHourGlass; ) z, Z" J! l5 r5 dTSearchRec sr; $ d6 e3 w. ~- d/ U7 v TTreeNode *NodeTmp=Node; + ]* e7 i( S6 n AnsiString DirName,DirTmp; 1 ~5 O% B* O$ }+ R) |. x- r DirName=Node->Text; ! F# g5 x; v7 c8 i$ G for(int i=Node->Level;i>1;i--) 5 H4 S7 n: l" m/ Z! `; P { , Z2 [3 q$ {# G NodeTmp=NodeTmp->arent; * e+ F* I% h8 @' g DirTmp=NodeTmp->Text; ( C, K& s4 E+ C% e4 kif(DirTmp.SubString(DirTmp.Length(),1)!="\\") 8 u/ D/ q( G( \$ X. s* a+ X5 e+ W5 F DirTmp+="\\"; ! M' p0 h) J8 H; Q- g DirName.Insert(DirTmp,0); 5 o$ h5 O( B; A5 I% h} ) T" s2 B+ U( a2 J8 d$ x2 ^ if(DirName.SubString(DirName.Length(),1)!="\\") 8 u5 @! `0 v6 H" J; [! { DirName+="\\"; 3 C; S8 A C; p1 @- w for(int j=0;j<Node->Count;j++) # r7 f; R+ K4 _" K{ * ~0 N6 P% Z+ \. \. [3 z# ~* \3 H& sif(Node->Item[j]->Count==0); " m: d1 f" P5 L% m { 7 e- b! T* Q j5 d8 m7 p ?( Zif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) / {$ h8 b( {; ~3 r8 [, B{ & I3 q8 Z8 H4 n do " D5 b4 K/ j5 t* ~9 [6 ]3 R- [ { $ U+ g3 J- m! o" V- C$ l$ X//Node->Item[j]->ImageIndex=5; C$ ~: d; D3 c. D$ n6 P4 J9 `4 ^ //Node->Item[j]->SelectedIndex=4; ) r# F' o; D1 i8 N: ^: [ o if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") ! M, h9 G) U1 V6 R: H{ 2 i" O; ~" V! i0 }) `3 b5 j* K Node->Item[j]->ImageIndex=0; 5 J% a3 t+ O2 E9 Y$ F; L g6 j& kNode->Item[j]->SelectedIndex=4; 6 p! Q/ ?' ]6 r. ^/ g. GTreeView1->Items->AddChild(Node->Item[j],sr.Name); ' C5 P% [/ j& ]; @5 o- I } . z5 X/ J1 j0 ^1 {} 2 [ {, E: k. J( ~5 u+ n; x. Uwhile (FindNext(sr)==0); k8 `0 L- |' ^6 n6 E FindClose(sr); 5 E, z) _% U. T. M$ d- n" b6 P2 p. O} }2 r5 N) p, U* u} 4 U7 T/ z; ?& o. N } # O; ~! ~/ a+ H% {$ r- B2 S, i) n& AScreen->Cursor=crDefault; : k. m6 e, v* Y+ j; P}






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