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

📄 main.pas

📁 ziptv为delphi控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
      Procedure UnZIP1Progress(Sender: TObject; ByFile, ByArchive: Byte);
      Procedure UnZIP1RenameFile(Sender: TObject; FileName: String;
         Var NewFileName: String);
      Procedure Zip1Activate(Sender: TObject);
      Procedure Zip1Begin(Sender: TObject; FName: String; Count: Integer;
         Var Extract: Boolean);
      {$IFDEF DEL4_OR_HIGHER}
      Procedure Zip1ClearDisk(Sender: TObject; Drive: String; RequiredSpace,
         FreeSpace, TotalSpace: Int64; Var Cancel: Boolean);
      {$ELSE}
      Procedure Zip1ClearDisk(Sender: TObject; Drive: String; RequiredSpace,
         FreeSpace, TotalSpace: Comp; Var Cancel: Boolean);
      {$ENDIF DEL4_OR_HIGHER}
      Procedure Zip1Deactivate(Sender: TObject);
      Procedure Zip1DiskSpanFileExists(Sender: TObject; FileName: String;
         FileDate: TDateTime; Var OverwriteMode: TOverwriteMode);
      Procedure Zip1DiskWriteProtectErr(Sender: TObject; Var Abort: Boolean);
      Procedure Zip1DiskInDrvErr(Sender: TObject; Var Abort: Boolean);
      Procedure Zip1DeleteFile(Sender: TObject; FileName: String; Count,
         MaxCount: Integer);
      Procedure Zip1End(Sender: TObject; FN: String; CRC_PASS: Boolean);
    	Procedure Zip1ExcludeFile(Sender: TObject; FileName: String);
      Procedure Zip1FileExists(Sender: TObject; Filename: String; FileDate: TDateTime;
         Var OverwriteMode: TOverwriteMode);
      Procedure Zip1FileScanStatus(Sender: TObject; FileName: String;
         FilesCount: Integer; FilesSize: Int64);
      Procedure Zip1InsertDisk(Sender: TObject; VolumeName: String;
         Var Cancel: Boolean);
      Procedure Zip1NonWriteableArchive(Sender: TObject; ArchiveFile: String;
         Var WriteToFile: Boolean);
      Procedure Zip1RecurseDir(Sender: TObject; Directory: String);
      Procedure Zip1RenameDupeFile(Sender: TObject; FileName: String;
         Var NewFileName: String; Var Rename: Boolean);
      Procedure Zip1ReplaceFile(Sender: TObject; FileName,
         NewFileName: String; Date, NewDate: TDateTime; FileSize,
         NewFileSize: Int64; Attr, NewAttr: Integer; Var Replace: Boolean);
      Procedure Zip1TmpFileMoveBegin(Sender: TObject; archive,
         TempFileName: String; Var Cancel: Boolean);
      Procedure Zip1TmpFileProgress(Sender: TObject; ByFile, ByArchive: Byte);
      Procedure Zip1TmpFileMoveEnd(Sender: TObject);

      Procedure ZipSplitter1SplitDeleteVolume(Sender: TObject; VolumeName:
         String; Var DeleteToRecycleBin: Boolean);
      Procedure ZipSplitter1SplitNewVolume(Sender: TObject; Index: Cardinal;
         NewVolumeName: String);
      Procedure ZipSplitter1SplitBegin(Sender: TObject; archive, TempFileName:
         String; Var Cancel: Boolean);

      Procedure ZipTV1Activate(Sender: TObject);
      Procedure ZipTV1CorruptZipHeader(Sender: TObject; HeadFlag:
         THeaderTypeState; Var Cancel: Boolean);
      Procedure ZipTV1Deactivate(Sender: TObject);
      Procedure ZipTV1Error(Sender: TObject; FileName, ExtendedMsg,
         VolumeID: String; ECode: Integer);
      Procedure ZipTV1GetZipFirstDisk(Sender: TObject; Var Cancel: Boolean);
      Procedure ZipTV1GetZipNextDisk(Sender: TObject; VolumeName: String;
         Var Cancel: Boolean);
      Procedure ZipTV1GetZipLastDisk(Sender: TObject; Var Cancel: Boolean);
      Procedure ZipTV1NextVolume(Sender: TObject; Var VolumeName: String;
         VolumeID: Integer; FExists: Boolean; Var Cancel: Boolean);
      Procedure ZipTV1Read(Sender: TObject; Offset, Filenum: Integer);
      Procedure ZipTV1ReadFile(Sender: TObject; FileName: String);
      Procedure ZipTV1Totals(Sender: TObject; UnpackSize, PackSize: Int64;
         Ratio, NumFiles: Integer);

      Procedure ZipView1DblClick(Sender: TObject);
      Procedure ZipView1Click(Sender: TObject; Row, Col: Integer);
      Procedure ZipView1HeaderClick(HeaderControl: THeaderControl;
         Section: THeaderSection);
      Procedure ZipView1SortCompare(Sender: TObject; Var Item1, Item2: String;
         Column: Integer);

      Procedure Edit1KeyPress(Sender: TObject; Var Key: Char);
      Procedure ComboBox1Click(Sender: TObject);
      Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
      Procedure FormShow(Sender: TObject);
      Procedure ComboBox1KeyPress(Sender: TObject; Var Key: Char);
      Procedure RegArchive1Association(Sender: TObject; Appname: String;
      	Var Cancel: Boolean);
      Procedure BitBtn1Click(Sender: TObject);
      Procedure BitBtn2Click(Sender: TObject);
      Procedure BitBtn3Click(Sender: TObject);
      Procedure BitBtn4Click(Sender: TObject);
      Procedure BitBtn5Click(Sender: TObject);
      Procedure BitBtn6Click(Sender: TObject);
      Procedure CheckBox1Click(Sender: TObject);
   Private
      {$IFDEF ListView}
      fSortColumn: Integer;
      fSortForward: Boolean;
      {$ENDIF ListView}
   Public
   End;

Var
   frmMain: TfrmMain;
   ExtractComponent: TUnBase;           (* Base class for decompression components *)
   CompressComponent: TCompBASE;        (* Base class for compression components *)
   DoCancel: TSetCancel; (* Variable to point to current component's Cancel method *)

Implementation

Uses
   Unit1,                               (* frmAddFiles     *)
   Unit2,                               (* frmExtract      *)
   Unit3,                               (* frmOverwrite    *)
   Unit4,                               (* frmUUEncode     *)
   Unit5,                               (* frmErrorMges    *)
   Unit6,                               (* frmRunFile      *)
   Unit7,                               (* frmEditComments *)
   Unit8,                               (* frmTestArchive  *)
   Unit9,                               (* frmComment      *)
   Unit10,                              (* frmInput        *)
   Unit11,                              (* frmSplitArchive *)
   ztvCrypt,
   ztvStreams,
   ztvConsts;

Const
   ZipTVDemoKey = 'Software\Visual Developer\Delphi By Design\ZipTVDemo';

Const
   (* Column Headers *)
   COLUMN_FILENAME = 0;
   COLUMN_DATETIME = 1;
   COLUMN_PACKED = 2;
   COLUMN_UNPACKED = 3;
   COLUMN_RATIO = 4;
   COLUMN_METHOD = 5;
   COLUMN_ATTR = 6;
   COLUMN_FOLDER = 7;
   COLUMN_FILETYPE = 8;
   COLUMN_CRC = 9;
   COLUMN_OFFSET = 10;
   COLUMN_ENCRYPTED = 11;
   COLUMN_VOLUMENAME = 12;
   COLUMN_COMMENT = 13;

Const
   TOTALS = 0;
   Selected = 1;
   SELECTALL = 2;

   {$R *.DFM}
   {$R Main.RES}

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

Procedure TfrmMain.ApplicationBusy;
Begin
   Application.ProcessMessages();

   {$IFDEF ListView}
   ListView1.Cursor := crHourGlass;
   ListView1.Items.BeginUpdate();
   {$ELSE}
   ZipView1.Cursor := crHourGlass;
   ZipView1.Items.BeginUpdate();
   {$ENDIF ListView}

   SetLedColor(clRed);
End;
//-------------------------------------------------------------

Procedure TfrmMain.ApplicationWaiting;
Begin
   {$IFDEF ListView}
   ListView1.Items.EndUpdate();
   ListView1.Cursor := crDefault;
   {$ELSE}
   ZipView1.Items.EndUpdate();
   ZipView1.Cursor := crDefault;
   {$ENDIF ListView}
   SetLedColor(clGreen);
End;
//-------------------------------------------------------------
(* Menu - File/Enable & File/Disable *)

Procedure TfrmMain.EnableMenus;
Var
   CommentSupported: Boolean;
   CompressSupported: Boolean;
   DecompressSupported: Boolean;
   ValidationSupported: Boolean;
Begin

   CommentSupported := ZipTV1.IsCommentEditable(ZipTV1.ArcType);
   CompressSupported := ZipTV1.IsArcCompressable(ZipTV1.ArcType);
   DecompressSupported := ZipTV1.IsArcDecompressable(ZipTV1.ArcType);
   ValidationSupported := ZipTV1.IsArcVerifyable(ZipTV1.ArcType);

   (* Currently can't add files to a CAB archive... only create new *)
   If Not ZipTV1.IsArcValid(ZipTV1.ArcType) Then
   Begin
      mnuAction1.Visible := False;      // action menu
      mnuClose1.Enabled := False;       // close menu
      mnuSaveAs1.Enabled := False;      // saveas menu
      mnuSort1.Enabled := False;        // sort menu
      BitBtn3.Enabled := False;         // add button
      BitBtn4.Enabled := False;         // extract button
      BitBtn5.Enabled := False;         // view button
      BitBtn6.Enabled := False;         // test button
   End
   Else
   Begin
      mnuAction1.Visible := True;       // action menu
      mnuClose1.Enabled := True;        // close menu
      mnuSaveAs1.Enabled := True;       // saveas menu
      mnuSort1.Enabled := True;         // sort menu
      // add button
      BitBtn3.Enabled := CompressSupported And (Not (ZipTV1.ArcType = atCab));
      BitBtn4.Enabled := DecompressSupported; // extract button
      BitBtn5.Enabled := DecompressSupported; // view button
      BitBtn6.Enabled := ValidationSupported; // test button
   End;

   mnuDelete1.Enabled := CompressSupported And (Not (ZipTV1.ArcType = atCab));
   mnuDelete2.Enabled := mnuDelete1.Enabled; //popup menu

   mnuExtract1.Enabled := DecompressSupported;
   mnuAddFiles1.Enabled := CompressSupported And (Not (ZipTV1.ArcType = atCab));
   mnuAddFiles2.Enabled := mnuAddFiles1.Enabled; //popup menu
   mnuEditComment1.Enabled := CommentSupported;
   mnuEditComment2.Enabled := CommentSupported; //popup menu
   mnuTestArchive1.Enabled := ValidationSupported;
   mnuTestArchive2.Enabled := ValidationSupported; //popup menu
End;
//-------------------------------------------------------------

Procedure TfrmMain.DisplayFile(FileName: String);
Var
   ComboBoxIndex: Integer;
   //   sTemp            : String;
Begin
   SetCurrentDir(ExtractFileDir(FileName));

   ZipTV1.FileSpec.Clear();
   If Edit1.Text <> '' Then
      ZipTV1.FileSpec.Add(Edit1.Text)
   Else
      ZipTV1.FileSpec.Add('*.*');

   ZipTV1.RecurseDirs := cbRecurseDirs.Checked;

   RefreshList(FileName);

   mnuClose1.Enabled := True;

   If (ZipTV1.IsArcValid(ZipTV1.ArcType)) And (ZipTV1.FileSpec.Count > 0) Then
   Begin
      ComboBoxIndex := ComboBox1.Items.IndexOf(ZipTV1.ArchiveFile);
      If ComboBoxIndex > -1 Then
         ComboBox1.Items.Delete(ComboBoxIndex);

      ComboBox1.Items.Insert(0, LowerCase(ZipTV1.ArchiveFile));
      ComboBox1.ItemIndex := 0;

      Caption := ZipTV1.ArchiveFile;
   End
   Else
      Caption := '';
End;
//-------------------------------------------------------------
(* Menu - File/Exit *)

Procedure TfrmMain.mnuExit1Click(Sender: TObject);
Begin
   Close();
End;
//-------------------------------------------------------------
(* Menu - File/Close *)

Procedure TfrmMain.mnuClose1Click(Sender: TObject);
Begin
   ZipTV1.ArchiveFile := '';

   ApplicationBusy();
   {$IFDEF ListView}
   ListView1.Items.Clear();
   {$ELSE}
   ZipView1.Clear();
   {$ENDIF ListView}
   ApplicationWaiting();

   Caption := 'ZipTV Components demo...';
   StatusBar1.SimplePanel := True;

   ComboBox1.ItemIndex := -1;
   EnableMenus();
End;
//-------------------------------------------------------------
(* Menu - Action/Delete selected item *)

Procedure TfrmMain.mnuDelete1Click(Sender: TObject);
Var
   i: Integer;
   HoldFileSpec: TStrings;              //restore original filespec property
   FilesDeleted: Integer;
Begin
   {$IFDEF ListView}
   If (ListView1.Selected <> Nil) And (ZipTV1.ArchiveFile <> '') Then
      {$ELSE}
   If (ZipView1.SelCount > 0) And (ZipTV1.ArchiveFile <> '') Then
      {$ENDIF ListView}
   Begin

      If MessageDlg('Delete selected file(s)?',
         mtConfirmation,
         [mbYes, mbNo],
         0) = mrNo Then
         Exit;

      (* DefineCompressComponent is a function defined in this module *)
      If Not DefineCompressComponent() Then
         Exit;

      {$IFDEF ListView}
      ListView1.Cursor := crHourGlass;
      {$ELSE}
      ZipView1.Cursor := crHourGlass;
      {$ENDIF ListView}

      CompressComponent.ArchiveFile := ZipTV1.ArchiveFile;

      HoldFileSpec := TStringList.Create;
      HoldFileSpec.Assign(CompressComponent.FileSpec);
      Try
         CompressComponent.FileSpec.Clear();
         CompressComponent.ExcludeSpec.Clear();

         (* Add all selected rows to filespec property *)
         {$IFDEF ListView}
         For i := 0 To Pred(ListView1.Items.Count) Do
            If ListView1.Items[i].Selected Then
               CompressComponent.FileSpec.Add(ListView1.Items[i].Caption);
         {$ELSE}
         For i := 0 To ZipView1.Items.Count - 1 Do
            If ZipView1.Selected[i] Then
               CompressComponent.FileSpec.Add(ZipView1.Column[i, COLUMN_FOLDER] +
                  ZipView1.Column[i, COLUMN_FILENAME]);
         {$ENDIF ListView}

         (* If we have any filespecs, process file deletion *)
         CompressComponent.Switch := swDelete;
         If CompressComponent.FileSpec.Count > 0 Then
         Begin
            (* Set local cancel pointer to correct component *)
            DoCancel := CompressComponent.SetCancel;

            FilesDeleted := CompressComponent.Compress();
            If FilesDeleted > 0 Then
            Begin
               {$IFDEF ListView}
               //...ListView can't delete rows
               {$ELSE}

⌨️ 快捷键说明

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