数学建模社区-数学中国

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

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

% \4 `3 q! X; H! P2 Uvoid __fastcall TForm1::FormCreate(TObject *Sender) : e+ Q* G; a* u n0 W- r{ 3 b. ~6 v4 D, n4 Z$ C. C: OCurrentDir=GetCurrentDir(); ) j# Z3 @9 ]' Z( }' `UpdateTreeView(); ' A8 p- n" Y9 m4 S/ ^; k) s# U UpdateListView();

8 ~ N$ p+ {% t& g

} 5 d4 r) i( s# `' g5 j; S//--------------------------------------------------------------------------- ; v& z3 ?5 d# R1 q8 S( r( Z% X3 lvoid __fastcall TForm1::UpdateTreeView() % x. _- y+ L1 I/ c { ( P; y% K# L( ?; T$ t TTreeNode *rNode,*mNode; 4 }8 ?2 w. J. ] TreeView1->Items->Clear(); ; Q) A- |2 Z w M* }rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); / F1 W7 ]. c, R( q) e% D! J rNode->ImageIndex=1; / u" i/ W+ s. U2 J" l rNode->SelectedIndex=1; * [! u; {6 O0 s0 n8 PmNode=TreeView1->Items->AddChild(rNode,"A:"); 9 Z9 p' i5 b$ I/ SmNode->ImageIndex=2; B/ U6 s4 j! h f5 `. o W7 [mNode->SelectedIndex=2; + b2 Q8 x) _; b p4 `; q2 O- r AddDirectory("A:",mNode); ; b3 Y% A3 t; B0 n for(int i=1;i<DriveComboBox1->Items->Count;i++) - p$ f. x+ X' Y R2 p. V( B) v# M{ V$ _, y# o) I/ z$ R' X4 ImNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); 2 S. w5 y4 {. {9 Q# D+ \7 ^7 nmNode->ImageIndex=3; ) I5 O/ R+ E( B& T4 Q6 P) ?$ i mNode->SelectedIndex=3; 8 M9 j) j/ e9 G6 I AddDirectory(AnsiString(char('B'+i))+":",mNode); ) B" G5 D9 y, B3 J2 H } $ H8 b9 m }3 ^8 p; g; S! Y5 {- L} 4 O% y W2 |4 {# K3 V0 i1 x4 j/ n+ j //------------------------------------------------------------------------ : ^' E4 r% r: v' s3 zvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) & x6 Y5 h: n; v$ ~) u9 R8 B) R z2 M { E1 e! M( W$ k8 j: ITSearchRec sr; & h- p, y* X+ s/ \' b# Q, _5 ~ TTreeNode *mNode; `9 ~9 [( B, [! D+ F if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) 6 U0 k2 {) s1 K" f' d& f3 I* T W2 }{ - q0 W9 R* @. }9 x6 Qif(sr.Attr==faDirectory) 1 s5 }2 ?; R, L( a9 ]5 z0 T6 ]{ % U% F7 A+ s$ mif(sr.Name!="."&&sr.Name!="..") * E' ~+ i, {7 [% Z; w{ & _" U& D" ~" {" d mNode=TreeView1->Items->AddChild(fNode,sr.Name); " s$ y0 N f1 ~5 P2 b mNode->ImageIndex=0; 1 Q0 | P( t+ K& r7 [3 ^6 f mNode->SelectedIndex=4; " r6 v% x6 u; D* T- Q% c, A // AddDirectory(path+"\\"+sr.Name,mNode); 9 ~0 y2 J# Y6 n1 T) Q! E} 9 T& X+ I/ r6 h R6 N } 0 T: s4 N& H3 } } + J" }8 O# M3 c4 C2 P' m* K# n: V while(FindNext(sr)==0) : \6 n q& g Y" P* g' s# w4 e { 3 F1 `& q; I) W) @: _ if(sr.Attr==faDirectory) 7 G6 I' L) [1 t6 A9 i2 Y{ * C8 e3 E* m# g! e, v if(sr.Name!="."&&sr.Name!="..") ) |8 x; t2 w7 v1 }1 w4 S8 H5 I { ' E# v, G) o7 b9 }& Z mNode=TreeView1->Items->AddChild(fNode,sr.Name); . x* m0 `* Q2 a% c4 F U* _mNode->ImageIndex=0; 7 H" |! N+ D0 \mNode->SelectedIndex=4; 7 {' m9 B+ R! h9 j- J& J // AddDirectory(path+"\\"+sr.Name,mNode); ( P, X0 c; P/ N5 P4 v! u} 6 a; F5 j& _* i9 u5 r7 Y' s7 @} ' F! @& S$ f5 x# ^# d, H9 d } $ O2 Q! W' T" g FindClose(sr); % V* {1 o1 T6 p2 A f( x' V% e }

% M/ _( A: _5 Y A

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

. [6 |$ d; _& \$ o% |

void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, " g3 |7 W6 @0 [* u- z* o bool &AllowChange) ; {7 l0 P+ Y5 X1 z{ 5 M2 h- @& D" Q1 l. H6 J Screen->Cursor=crHourGlass; * A8 I7 x n9 L2 O. q3 Q0 n TSearchRec sr; 0 L B+ O# n( ~' W3 O# @6 j) E% tTTreeNode *NodeTmp=Node; 0 r$ [6 f/ r" p2 x& zAnsiString DirName,DirTmp; : }4 p5 i+ E# B& iDirName=Node->Text; * q2 |' K3 g- U2 ^0 Z- Z0 m3 Q for(int i=Node->Level;i>1;i--) % \% b4 {" }( X% y4 |8 e6 J { ( \1 T' D( N* m$ k NodeTmp=NodeTmp->arent; + F* h% W8 A! z. R, z# hDirTmp=NodeTmp->Text; $ q6 F0 U4 A' ^if(DirTmp.SubString(DirTmp.Length(),1)!="\\") ; d+ c6 g9 q2 N( {7 C DirTmp+="\\"; " C. K% E& l" i* K( s5 _! W- xDirName.Insert(DirTmp,0); / D& |3 j5 e: Y1 g: r} . o* Q# _- [' ^0 u6 [ if(DirName.SubString(DirName.Length(),1)!="\\") 7 s, T" A: \: N6 U2 C& rDirName+="\\"; , d9 z! z0 n9 Z( W; E& n$ }1 E: K for(int j=0;j<Node->Count;j++) # W3 h3 h s/ M. v7 k" X { * e" A" d, i2 r$ R# n8 v9 J) dif(Node->Item[j]->Count==0); 5 L0 m4 M2 c/ |- K7 M { # V9 v) G2 u& { e* vif (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) 7 B- F; k( P. y2 [* t9 x1 z { & h4 u9 j9 |8 u7 \* O2 O' sdo - t' ]' W5 O4 x& K6 G { 4 V! T, ?; S- Y( Z//Node->Item[j]->ImageIndex=5; " ]5 u: a) S3 ^- ^9 f# } //Node->Item[j]->SelectedIndex=4; " O& e0 q# T2 p/ G' M if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") 6 b$ c% u5 G* L9 R' h, \, v{ % n# d2 d2 d' ~4 a1 T Y( N. LNode->Item[j]->ImageIndex=0; " K# P; e+ O: d9 r* DNode->Item[j]->SelectedIndex=4; 8 A' f( b5 O- q2 Z6 T9 u" f$ m7 hTreeView1->Items->AddChild(Node->Item[j],sr.Name); 8 t0 t6 E: C, W+ v } 8 C3 ^& [$ P) Q8 [* G9 ^} ) `+ |$ W( a" I+ b' x5 ?7 \ while (FindNext(sr)==0); / Z( I6 Z$ V5 ]' p4 O FindClose(sr); ! L" M; W: o/ V( Z, A9 v} ' Q) `0 U& K8 }% B } 9 b/ W8 }/ F0 \+ f} / v# N- l' s0 ?4 z: t: u9 nScreen->Cursor=crDefault; # q. x8 u9 C8 } }






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