⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disclayout.pas

📁 刻录机源码
💻 PAS
字号:
unit DiscLayout;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, Grids, ExtCtrls, mbDrvLib, mbCDBC, mbISOLib, StdCtrls, Menus;

type
  TfrmDiscLayout = class(TForm)
    Panel2: TPanel;
    Splitter1: TSplitter;
    fl: TStringGrid;
    PopupMenu2: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    PopupMenu1: TPopupMenu;
    Delete1: TMenuItem;
    tvDir: TTreeView;
    Refresh1: TMenuItem;
    bClose: TButton;
    procedure FormShow(Sender: TObject);
    procedure tvdirClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Refresh1Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure Delete1Click(Sender: TObject);
    procedure bCloseClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure DisplayDir(treenode: TTreeNode; Dir: PDirEntry);
  end;

var
  frmDiscLayout: TfrmDiscLayout;
  mcdb: TMCDBurner;
implementation

uses unit1;

{$R *.DFM}
procedure TfrmDiscLayout.DisplayDir(treenode: TTreeNode; Dir: PDirEntry);
var
  Node: TTreeNode;
  CurrentFile: PFileEntry;
begin
  if (Dir = nil) then exit;
  CurrentFile := Dir.Files;
  while CurrentFile <> nil do
  begin
    if ((CurrentFile.Attr and faDirectory) = faDirectory) then
    begin
      Node := tvDir.Items.AddChildObject(treenode, CurrentFile.LongName, CurrentFile.DirRec);
      DisplayDir(Node, CurrentFile.DirRec);
    end;
    CurrentFile := CurrentFile.Next;
  end;
end;

procedure TfrmDiscLayout.FormShow(Sender: TObject);
var
  RootNode: TTreeNode;
begin
  mcdb := form1.mcdb;
  RootNode := tvdir.Items.InsertObject(nil,'CDROOT', mcdb.RootDir);
  DisplayDir(RootNode, mcdb.RootDir);
  tvdir.Selected := RootNode;
  tvdirClick(Sender);
end;

procedure TfrmDiscLayout.tvdirClick(Sender: TObject);
var
  p: PDirEntry;
  f: PFileEntry;
  i: Integer;
begin
  p := 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 <> nil do
  begin
    fl.Cells[0, i] := f.LongName;
    if ((f.Attr and faDirectory) <> faDirectory) then
    begin
      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);
    end
    else
    begin
      fl.Cells[1, i] := ' < DIR > ';
      fl.Objects[1, i] := TObject(f);
    end;
    f := f.Next;
    Inc(i);
  end;
  if i = 1 then
  begin
   fl.Rows[1].Clear;
   i := 2;
  end;
  fl.RowCount := i;
end;

procedure TfrmDiscLayout.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #27 then close;
end;

procedure TfrmDiscLayout.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TfrmDiscLayout.Button1Click(Sender: TObject);
begin
  while tvDir.Items.Count <> 0 do
    tvDir.Items[0].Delete;
  FormShow(Sender);
end;

procedure TfrmDiscLayout.Refresh1Click(Sender: TObject);
begin
  Button1Click(Sender);
end;

procedure TfrmDiscLayout.MenuItem1Click(Sender: TObject);
var
  SourceFile: PFileEntry;
  p: PDirEntry;
begin
  SourceFile := PFileEntry(fl.Objects[1,fl.Row]);
  if SourceFile <> nil then if ((SourceFile.Attr and faDirectory) = faDirectory) then
  begin
    ShowMessage('You can not delete directory, '+SourceFile.LongName+' is a directory, use tree view to delete directory');
    exit;
  end;
  if SourceFile <> nil then
  begin
    p := tvDir.Selected.Data;
    mcdb.RemoveFile(p, SourceFile );
    tvdirClick(Sender);
  end;
end;

procedure TfrmDiscLayout.Delete1Click(Sender: TObject);
var
  d: PDirEntry;
begin
  d := tvDir.Selected.Data;
  mcdb.RemoveDir(d);
  Button1Click(Sender);
end;

procedure TfrmDiscLayout.bCloseClick(Sender: TObject);
begin
  Close;
  
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -