QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2367|回复: 0
打印 上一主题 下一主题

用TreeView浏览目录

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:30 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

$ T/ J1 _4 `; y( i( b b void __fastcall TForm1::FormCreate(TObject *Sender) , e* e2 w' Z# P* ~% Q{ 6 O7 d0 s, J% c- l8 _+ {, Z, V+ \CurrentDir=GetCurrentDir(); + h- o/ H7 u8 M. v% [" ^UpdateTreeView(); 8 P) u' }7 N" P2 KUpdateListView();

0 m: N: \# R* a0 n' R( `& m4 c

} % _5 t3 d: ]5 b ~ o //--------------------------------------------------------------------------- * N9 c2 W% [" _' C void __fastcall TForm1::UpdateTreeView() 6 @5 B5 Y3 b( }1 c( j, ]9 p/ ~{ * ^6 _4 V# k4 oTTreeNode *rNode,*mNode; 1 S& M, n2 v7 n+ C0 |' N1 Q1 S TreeView1->Items->Clear(); & G3 W5 O3 B$ k( N+ h5 V rNode=TreeView1->Items->Add(TreeView1->Selected,"我的电脑"); ; i( W5 k) k$ p: WrNode->ImageIndex=1; 2 x/ u' u8 m5 k8 x2 H) f8 f) d3 OrNode->SelectedIndex=1; 3 v& k4 b5 N* q6 wmNode=TreeView1->Items->AddChild(rNode,"A:"); / n( ?; ?- J) y \3 lmNode->ImageIndex=2; % h* Z& g6 E" K8 B mNode->SelectedIndex=2; 3 @2 z& |4 \1 N7 FAddDirectory("A:",mNode); " A7 p8 a, h$ P8 @for(int i=1;i<DriveComboBox1->Items->Count;i++) " y" ?" k9 v+ i8 u I{ 4 }& H8 m5 g7 ]" J mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B'+i))+":"); , ?8 k: z. |# wmNode->ImageIndex=3; 4 A9 L5 v' V e- U6 G+ MmNode->SelectedIndex=3; & ?; G1 _: r+ g3 ^. C9 X6 L: }* j AddDirectory(AnsiString(char('B'+i))+":",mNode); " e% D1 U6 M. o2 Z# I+ ? } # Y5 S+ V* y* t3 @0 v' V9 i } , k- k# Z) A+ _//------------------------------------------------------------------------ 2 P& r/ N6 H! v* G6 \' lvoid TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) 3 J+ N0 F$ Y% H{ + }: f1 ^2 z( l9 o6 G+ E8 N TSearchRec sr; ( D, H. d! {$ G, ]4 ]9 wTTreeNode *mNode; $ k; i+ p2 |( z% O: A7 ^1 q0 j if(FindFirst(path+"\\*.*" ,faDirectory,sr)==0) / x. u0 X6 z& O7 C! T { . k6 f. F! ~) V1 G& Z' A7 b6 e1 ?if(sr.Attr==faDirectory) 8 \$ Z7 M+ i) [: U( i3 x { * t% }: v& ^/ P/ a+ H6 r if(sr.Name!="."&&sr.Name!="..") 9 R7 v$ h" O0 O# E( Y { & x- L" Z4 [8 r* {/ } mNode=TreeView1->Items->AddChild(fNode,sr.Name); . ]* H/ Q" m6 c0 p( \& }mNode->ImageIndex=0; & e/ \1 o# u3 {+ l7 F* E+ t% Z$ kmNode->SelectedIndex=4; 1 F: L0 C+ \: C/ S- w$ [$ u( B // AddDirectory(path+"\\"+sr.Name,mNode); 4 p( ^, D/ z4 {2 C# E4 w} 5 w! K0 f; k( e4 Q3 w} 0 \ A7 j5 t: c, B" L1 ~$ P } 6 F% c/ y7 {* I while(FindNext(sr)==0) % O* y7 K$ M2 @5 f3 l1 k7 a' ~! S, ]{ 7 }" V+ O4 k5 n! ~' T if(sr.Attr==faDirectory) Q0 k- I2 c$ P4 ?{ % t: C2 W1 s/ `4 m; @if(sr.Name!="."&&sr.Name!="..") . {& |$ p4 t6 } { ! A2 n" ]5 ?. ^4 ` R mNode=TreeView1->Items->AddChild(fNode,sr.Name); + X6 ^$ U. Y+ e t; T mNode->ImageIndex=0; 6 \) e$ I3 R5 }mNode->SelectedIndex=4; 5 O" W% O4 \# ]' l/ d' x // AddDirectory(path+"\\"+sr.Name,mNode); 5 p. F/ \# {5 |, [' Y7 E} 5 b( t) [9 Z' i% e* u } * `% X2 V/ O/ d3 `6 b7 y! o+ d: k } 9 S c/ w3 T2 k# Q4 u( V6 u9 f: x. ? FindClose(sr); / Q" ~) J, q7 M4 z( u+ \ }

7 r: l' L. A, A: j8 o

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

% l6 E3 E B' [0 n, a

void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, * h1 p, p( S# p, B6 w8 w+ f bool &AllowChange) 4 d+ x) G* v# I+ d9 P { ! k! @( J$ i2 h- m6 ^ Screen->Cursor=crHourGlass; ) P$ O4 h4 u1 X% ^. u; D/ H$ g TSearchRec sr; 2 _2 Z' J' Z! w, a TTreeNode *NodeTmp=Node; 4 U O# ^" D1 ^% ^4 s q' x% A# ` AnsiString DirName,DirTmp; ' u4 k% }+ n4 j- @, W9 VDirName=Node->Text; ' S/ a. p x2 Y2 z% {5 } for(int i=Node->Level;i>1;i--) + T( j" o4 i5 ` { L9 V1 k( n& v* HNodeTmp=NodeTmp->arent; ) V& Y! m v- B. q/ JDirTmp=NodeTmp->Text; 5 `, @' C- t! h. ?9 D if(DirTmp.SubString(DirTmp.Length(),1)!="\\") % i5 \& d% `2 J! g DirTmp+="\\"; 3 k) l1 p, k8 P! I DirName.Insert(DirTmp,0); + X" l8 I" X) c) K; N- r. r} 7 ]+ u2 A0 {: \) S& B0 zif(DirName.SubString(DirName.Length(),1)!="\\") : x/ j/ y1 v4 \% y9 E `) S6 { DirName+="\\"; + d0 h n* D n; Q1 yfor(int j=0;j<Node->Count;j++) 7 {+ b; n. e8 c& h& s2 r( n { # c' T! \- b+ U8 E7 n; B if(Node->Item[j]->Count==0); 0 g9 B2 I/ I1 Z, k* @) h S+ V{ . Q, C, E' w- w; v& ?5 E) k/ | if (FindFirst(DirName+Node->Item[j]->Text+"\\*.*", faAnyFile, sr) == 0) 6 k, o/ A6 V: [7 k/ R% z* v& R { 1 \/ j' J3 I5 _, `0 D7 X0 k do % b V9 q3 q5 E) |4 R/ C6 K{ 8 {! d# x7 \0 N //Node->Item[j]->ImageIndex=5; 5 h2 q# o+ R$ U3 L7 m. w. B //Node->Item[j]->SelectedIndex=4; 1 ~- \4 x$ T* ~- H& e if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") * K2 r$ ?2 \9 W( g1 o { : d0 |( G: u$ x$ M+ k4 g Node->Item[j]->ImageIndex=0; . J2 C, O9 K6 w. p5 ] Node->Item[j]->SelectedIndex=4; 2 ?2 u0 ~/ V; T, h! i TreeView1->Items->AddChild(Node->Item[j],sr.Name); % L5 } t' f) E} 7 }* v9 C M# r% L } 0 ]# C7 Z3 C C( ?' l' u$ Ewhile (FindNext(sr)==0); " a/ V6 v, z J7 @8 W' { FindClose(sr); 7 a) K, w, M6 H! }' M7 i8 h$ P} ' }% M) s2 n, X; ] } 6 I1 P# R r- E1 w6 e' s} ; a4 O3 ? b5 V9 F2 K$ \6 T& \- E Screen->Cursor=crDefault; % p( p. d& s5 c+ C" `4 T }

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-10 16:28 , Processed in 0.467219 second(s), 52 queries .

回顶部