全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1121
推到 Plurk!
推到 Facebook!

用TreeView瀏覽檔案目錄

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-25 21:42:07 IP:61.218.xxx.xxx 未訂閱
用TreeView瀏覽檔案目錄    資料來源:http://www.ccrun.com/
void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
CurrentDir=GetCurrentDir(); 
UpdateTreeView(); 
UpdateListView(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::UpdateTreeView() 
{ 
TTreeNode *rNode,*mNode; 
TreeView1->Items->Clear(); 
rNode=TreeView1->Items->Add(TreeView1->Selected,"我的電腦"); 
rNode->ImageIndex=1; 
rNode->SelectedIndex=1; 
mNode=TreeView1->Items->AddChild(rNode,"A:"); 
mNode->ImageIndex=2; 
mNode->SelectedIndex=2; 
AddDirectory("A:",mNode); 
for(int i=1;iItems->Count;i  ) 
  { 
  mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B' i)) ":"); 
  mNode->ImageIndex=3; 
  mNode->SelectedIndex=3; 
  AddDirectory(AnsiString(char('B' i)) ":",mNode); 
  } 
}     //------------------------------------------------------------------------ 
void TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) 
{ 
TSearchRec sr; 
TTreeNode *mNode; 
if(FindFirst(path "\\*.*" ,faDirectory,sr)==0) 
  { 
  if(sr.Attr==faDirectory) 
    { 
    if(sr.Name!="."&&sr.Name!="..") 
      { 
      mNode=TreeView1->Items->AddChild(fNode,sr.Name); 
      mNode->ImageIndex=0; 
      mNode->SelectedIndex=4; 
      // AddDirectory(path "\\" sr.Name,mNode); 
      } 
    } 
  } 
while(FindNext(sr)==0) 
  { 
  if(sr.Attr==faDirectory) 
    { 
    if(sr.Name!="."&&sr.Name!="..") 
      { 
      mNode=TreeView1->Items->AddChild(fNode,sr.Name); 
      mNode->ImageIndex=0; 
      mNode->SelectedIndex=4; 
      // AddDirectory(path "\\" sr.Name,mNode); 
      } 
    } 
  } 
FindClose(sr); 
}     //--------------------------------------------------------------------     void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, bool &AllowChange) 
{ 
Screen->Cursor=crHourGlass; 
TSearchRec sr; 
TTreeNode *NodeTmp=Node; 
AnsiString DirName,DirTmp; 
DirName=Node->Text; 
for(int i=Node->Level;i>1;i--) 
  { 
  NodeTmp=NodeTmp->Parent; 
  DirTmp=NodeTmp->Text; 
  if(DirTmp.SubString(DirTmp.Length(),1)!="\\") 
  DirTmp ="\\"; 
  DirName.Insert(DirTmp,0); 
  } 
if(DirName.SubString(DirName.Length(),1)!="\\") 
  DirName ="\\"; 
for(int j=0;jCount;j  ) 
  { 
  if(Node->Item[j]->Count==0); 
    { 
    if(FindFirst(DirName Node->Item[j]->Text "\\*.*", faAnyFile, sr) == 0) 
      { 
      do 
        { 
        //Node->Item[j]->ImageIndex=5; 
        //Node->Item[j]->SelectedIndex=4; 
        if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") 
          { 
          Node->Item[j]->ImageIndex=0; 
          Node->Item[j]->SelectedIndex=4; 
          TreeView1->Items->AddChild(Node->Item[j],sr.Name); 
          } 
        } 
        while (FindNext(sr)==0); 
        FindClose(sr); 
      } 
    } 
  } 
Screen->Cursor=crDefault; 
} 
聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
Tacohsu
一般會員


發表:6
回覆:12
積分:8
註冊:2002-07-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-04 15:11:08 IP:61.220.xxx.xxx 未訂閱
謝謝分享,但發現有少了些東西,給他補上去了. 請加上DriveComboBox ,TreeView元件    //.H 要加上 public:        // User declarations         __fastcall TForm1(TComponent* Owner);         void __fastcall UpdateTreeView();         void __fastcall AddDirectory(AnsiString path,TTreeNode *fNode); //---------------------------------------------------------------------------    //.cpp 需做修改 AnsiString CurrentDir; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender)  {  CurrentDir=GetCurrentDir();  UpdateTreeView(); //UpdateListView(); }  //--------------------------------------------------------------------------- void __fastcall TForm1::UpdateTreeView() { TTreeNode *rNode,*mNode;  TreeView1->Items->Clear();  rNode=TreeView1->Items->Add(TreeView1->Selected,"我的最愛");  rNode->ImageIndex=1;  rNode->SelectedIndex=1;  mNode=TreeView1->Items->AddChild(rNode,"A:");  mNode->ImageIndex=2;  mNode->SelectedIndex=2;  AddDirectory("A:",mNode); for(int i=1;iItems->Count;i ) { mNode=TreeView1->Items->AddChild(rNode,AnsiString(char('B' i)) ":"); mNode->ImageIndex=3; mNode->SelectedIndex=3; AddDirectory(AnsiString(char('B' i)) ":",mNode); } } //------------------------------------------------------------------------ void __fastcall TForm1::AddDirectory(AnsiString path,TTreeNode *fNode) { TSearchRec sr; TTreeNode *mNode; if(FindFirst(path "\\*.*" ,faDirectory,sr)==0) { if(sr.Attr==faDirectory) { if(sr.Name!="."&&sr.Name!="..") { mNode=TreeView1->Items->AddChild(fNode,sr.Name); mNode->ImageIndex=0; mNode->SelectedIndex=4; // AddDirectory(path "\\" sr.Name,mNode); } } } while(FindNext(sr)==0) { if(sr.Attr==faDirectory) { if(sr.Name!="."&&sr.Name!="..") { mNode=TreeView1->Items->AddChild(fNode,sr.Name); mNode->ImageIndex=0; mNode->SelectedIndex=4; // AddDirectory(path "\\" sr.Name,mNode); } } } FindClose(sr); } //-------------------------------------------------------------------- void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node, bool &AllowChange) { Screen->Cursor=crHourGlass; TSearchRec sr; TTreeNode *NodeTmp=Node; AnsiString DirName,DirTmp; DirName=Node->Text; for(int i=Node->Level;i>1;i--) { NodeTmp=NodeTmp->Parent; DirTmp=NodeTmp->Text; if(DirTmp.SubString(DirTmp.Length(),1)!="\\") DirTmp ="\\"; DirName.Insert(DirTmp,0); } if(DirName.SubString(DirName.Length(),1)!="\\") DirName ="\\"; for(int j=0;jCount;j ) { if(Node->Item[j]->Count==0); { if(FindFirst(DirName Node->Item[j]->Text "\\*.*", faAnyFile, sr) == 0) { do { //Node->Item[j]->ImageIndex=5; //Node->Item[j]->SelectedIndex=4; if((sr.Attr&faDirectory)&&sr.Name!="."&&sr.Name!="..") { Node->Item[j]->ImageIndex=0; Node->Item[j]->SelectedIndex=4; TreeView1->Items->AddChild(Node->Item[j],sr.Name); } } while (FindNext(sr)==0); FindClose(sr); } } } Screen->Cursor=crDefault; } //--------------------------------------------------------------------
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-04 15:42:56 IP:61.218.xxx.xxx 未訂閱
Tacohsu 您好:       謝謝您的細心!  <>網<>路志<>工聯盟---- href="http://www.vista.org.tw">http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
系統時間:2024-05-03 22:29:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!