gusucode.com > Delphi刻录软件源码程序 > Delphi刻录软件源码程序/ym_MagicCDDVDBurnerVCL-hicode/Examples/FullDemoC/DiscLayout.cpp

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

#include <vcl.h>
#pragma hdrstop

#include "DiscLayout.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "mbCDBC"
#pragma link "mbDrvLib"
#pragma resource "*.dfm"
TfrmDiscLayout *frmDiscLayout;

__fastcall TfrmDiscLayout::TfrmDiscLayout(TComponent* Owner)
        : TForm(Owner)
{

}
TfrmDiscLayout::DisplayDirectory(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);
      DisplayDirectory(Node, CurrentFile->DirRec);
    }
    CurrentFile = CurrentFile->Next;
  }
}

void __fastcall TfrmDiscLayout::FormShow(TObject *Sender)
{
  TTreeNode * RootNode = new TTreeNode(tvDir->Items);
  Form1->mcdb->FindDir("\\");
  RootNode = tvDir->Items->InsertObject(NULL,"CDROOT", Form1->mcdb->RootDir);
  DisplayDirectory(RootNode, Form1->mcdb->RootDir);
  tvDir->Selected = RootNode;
  tvDirClick(Sender);
}

void __fastcall TfrmDiscLayout::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 & Time ";
  fl->Cells[3][0] = "  Time";
  while (f  != NULL)
  {
    fl->Cells[0][i] = f->LongName;
    if ((f->Attr & faDirectory) != faDirectory)
    {
      fl->Objects[1][i] = (TObject *) f;
      fl->Cells[1][i] = IntToDec(f->FileSize, 9, " ");
      fl->Cells[2][i] = FormatDateTime("mm-dd-yyy hh:nn:ss", f->Time);
    }
    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 TfrmDiscLayout::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    Action = caFree;
}

void __fastcall TfrmDiscLayout::MenuItem1Click(TObject *Sender)
{

  PFileEntry SourceFile;
  PDirEntry  p;
  SourceFile = (PFileEntry)fl->Objects[1][fl->Row];
  if ( SourceFile != NULL)
    if ((SourceFile->Attr &  faDirectory) == faDirectory)
    {
      ShowMessage("You can not delete directory, " + SourceFile->LongName
                   + " is a directory, use tree view to delete directory");
      return;
    }
    if ( SourceFile != NULL)
    {
      p = (TDEntry *) tvDir->Selected->Data;
      mcdb->RemoveFile(p, SourceFile );
      tvDirClick(Sender);
    }
}