www.gusucode.com > Delphi刻录软件源码程序 > Delphi刻录软件源码程序/ym_MagicCDDVDBurnerVCL-hicode/Examples/FullDemoC/TreeView.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "TreeView.h" #include "unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "mbCDBC" #pragma link "mbDrvLib" #pragma resource "*.dfm" TfrmTree *frmTree; //--------------------------------------------------------------------------- __fastcall TfrmTree::TfrmTree(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TfrmTree::FormShow(TObject *Sender) { TTreeNode * RootNode = new TTreeNode(tvDir->Items); Form1->mcdb->FindDir("\\"); RootNode = tvDir->Items->InsertObject(NULL,"CDROOT", Form1->mcdb->RootDir); DisplayDir(RootNode, Form1->mcdb->RootDir); tvDir->Selected = RootNode; tvDirClick(Sender); } //--------------------------------------------------------------------------- TfrmTree::DisplayDir(TTreeNode * treenode, PDirEntry Dir) { TTreeNode * Node = new TTreeNode(tvDir->Items); PFileEntry CurrentFile; if (Dir == NULL) return 0; CurrentFile = Dir->Files; while ( CurrentFile != NULL ) { if (CurrentFile->Attr == faDirectory ) { Node = tvDir->Items->AddChildObject(treenode, CurrentFile->LongName, CurrentFile->DirRec); DisplayDir(Node, CurrentFile->DirRec); } CurrentFile = CurrentFile->Next; } } //--------------------------------------------------------------------------- void __fastcall TfrmTree::tvDirClick(TObject *Sender) { PDirEntry p; PFileEntry f; int i; p = (PDirEntry) tvDir->Selected->Data; f = p->Files; i = 1; fl->Cells[0][0] = "File Name"; fl->Cells[1][0] = "File Size"; fl->Cells[2][0] = " Date"; fl->Cells[3][0] = " Time"; while (f != NULL ) { fl->Cells[0][i] = f->LongName; if ( !(f->Attr & faDirectory)) { fl->Objects[1][i] = (TObject *)f; fl->Cells[1][i] = f->FileSize; } else { fl->Cells[1][i] = " < DIR > "; fl->Objects[1][i] = (TObject *)(f); } f = f->Next; i++; } if (i == 1) { fl->Rows[1]->Clear(); i = 2; } fl->RowCount = i; } //--------------------------------------------------------------------------- void __fastcall TfrmTree::flDblClick(TObject *Sender) { String TargetName; PFileEntry SourceFile; SourceFile = (PFileEntry)fl->Objects[1][fl->Row]; TargetName = SourceFile->LongName; if ( ( (SourceFile->Attr & faDirectory) == faDirectory )) { ShowMessage("You can not extract directory, " + TargetName + " is a directory"); return; } if ( InputQuery("Extract File","Enter Filename and Path", TargetName) ) { Form1->mcdb->ExtractFile(SourceFile, TargetName); } }