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

📄 main.pas

📁 ziptv为delphi控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
               ZipView1.DeleteSelected;
               {$ENDIF ListView}
               ShowMessage('Deleted : ' + IntToStr(FilesDeleted) + ' files');
            End;
         End;

      Finally
         CompressComponent.FileSpec.Assign(HoldFileSpec);
         HoldFileSpec.Free();
      End;

      (* All files could have been deleted... if so, ArchiveFile no longer
      (* exists.  If not exist, clear the forms caption else refresh the list *)
      If FileExists(ZipTV1.ArchiveFile) Then
         //RefreshList( ZipTV1.ArchiveFile )
      Else
         Caption := '';

      {$IFDEF ListView}
      ListView1.Cursor := crDefault;
      {$ELSE}
      ZipView1.Cursor := crDefault;
      {$ENDIF ListView}
   End
   Else

      ShowMessage('No files selected to delete');

End;
//-------------------------------------------------------------

Function TfrmMain.RefreshList(FileName: String): Boolean;
Begin
   Result := False;
   ApplicationBusy();
   Try
      {$IFDEF ListView}
      ListView1.Items.Clear();
      {$ELSE}
      ZipView1.Clear();
      {$ENDIF ListView}

      If FileName <> '' Then
      Begin
         Try
            ZipTV1.ArchiveFile := FileName;
         Finally
            Result := ZipTV1.IsArcValid(ZipTV1.ArcType);
            If Result Then
            Begin
               If ZipTV1.FileSpec.Count = 0 Then
                  ZipTV1.FileSpec.Add('*.*');

               ZipTV1.TranslateOemChar := CheckBox1.Checked; // ...foreign language chars

               (* Set local cancel pointer to correct component *)
               DoCancel := ZipTV1.SetCancel;

               // --------------
               ZipTV1.Activate();
               // --------------
            End;
         End;

         EnableMenus();
         DisplayTotals(TOTALS);

         {$IFDEF ListView}
         ListView1.SetFocus();
         {$ELSE}
         ZipView1.SetFocus();
         {$ENDIF ListView}

      End;
   Finally
      ApplicationWaiting();
   End;
End;
//-------------------------------------------------------------
(* Menu Action/Refresh *)

Procedure TfrmMain.mnuRefresh1Click(Sender: TObject);
Begin
   DisplayFile(ZipTV1.ArchiveFile);
End;
//-------------------------------------------------------------
(* Change colors of little light in corner of form *)

Procedure TfrmMain.SetLedColor(lColor: TColor);
Begin
   With imgLed.Canvas Do
   Begin
      Brush.Color := lColor;
      FloodFill(6, 6, Pixels[6, 6], fsSurface);
   End;
   pbxLed.Repaint;
End;
//-------------------------------------------------------------
(* Little light in right corner of form *)

Procedure TfrmMain.pbxLedPaint(Sender: TObject);
Begin
   With Sender As TPaintBox Do
      Canvas.Draw((Width - imgLed.Width) Div 2,
         (Height - imgLed.Height) Div 2,
         imgLed.Picture.Graphic);
End;
//-------------------------------------------------------------
(* Display totals in bottom status bar *)

Procedure TfrmMain.DisplayTotals(Which: Byte);
Var
   IsSelected: Boolean;
   Ratio: Byte;
   i: Integer;
   files: Integer;
   SelectedPackedSize,
      SelectedUnpackedSize: Double;
Begin
   SelectedPackedSize := 0;
   SelectedUnpackedSize := 0;

   If Which <> SELECTALL Then
{$IFDEF ListView}
      If ListView1.Selected = Nil Then
         Which := TOTALS;
{$ELSE}
      If ZipView1.SelCount = 0 Then
         Which := TOTALS;
{$ENDIF ListView}


   If (Which = Selected) Or (Which = SELECTALL) Then
   Begin
{$IFDEF ListView}
      If Which = SELECTALL Then
         files := ListView1.Items.Count
      Else
         files := ListView1.SelCount;

      For i := 0 To ListView1.Items.Count - 1 Do
      Begin
         If Which = SELECTALL Then
            IsSelected := True
         Else
            IsSelected := ListView1.Items[i].Selected;

         If IsSelected Then
         Begin
            SelectedPackedSize :=
               SelectedPackedSize +
               StrToInt(ListView1.Items[i].SubItems[COLUMN_PACKED - 1]);
            SelectedUnpackedSize :=
               SelectedUnpackedSize +
               StrToInt(ListView1.Items[i].SubItems[COLUMN_UNPACKED - 1]);
         End;
      End;
 {$ELSE}
      If Which = SELECTALL Then
         files := ZipView1.Items.Count
      Else
         files := ZipView1.SelCount;

      For i := 0 To ZipView1.Items.Count - 1 Do
      Begin
         If Which = SELECTALL Then
            IsSelected := True
         Else
            IsSelected := ZipView1.Selected[i];

         If IsSelected Then
         Begin
            (* COLUMN_??? listed at top of this unit *)
            SelectedPackedSize :=
               SelectedPackedSize +
               StrToInt64(ZipView1.Column[i, COLUMN_PACKED]);

            SelectedUnpackedSize :=
               SelectedUnpackedSize +
               StrToInt64(ZipView1.Column[i, COLUMN_UNPACKED]);
         End;
      End;
{$ENDIF ListView}
   End
   Else
   Begin                                (* Which = TOTALS *)
{$IFDEF ListView}
      files := ListView1.Items.Count;
{$ELSE}
      files := ZipView1.Items.Count;
{$ENDIF ListView}
      SelectedPackedSize := ZipTV1.TotalPackedSize;
      SelectedUnpackedSize := ZipTV1.TotalUnpackedSize;
   End;

   Ratio := CalcRatio(SelectedPackedSize, SelectedUnpackedSize);

   With StatusBar1 Do
   Begin

      If files > 0 Then
         Panels[0].Text := ArcTypeNames[ZipTV1.ArcType]
      Else
         Panels[0].Text := '';

      Panels[1].Text := 'Files: ' + IntToStr(files);
      Panels[2].Text := 'Packed: ' + Format('%.0f', [SelectedPackedSize]);
      Panels[3].Text := 'Unpacked: ' + Format('%.0f', [SelectedUnpackedSize]);
      Panels[4].Text := 'Ratio: ' + IntToStr(Ratio) + '%';
   End;

   ProgressBar1.Position := 0;
   ProgressBar2.Position := 0;
   ProgressBar1.Visible := False;
   ProgressBar2.Visible := False;
   StatusBar1.SimplePanel := False;
   StatusBar1.Update();
End;
//-------------------------------------------------------------
(* Initialize system icons *)

Procedure TfrmMain.FormCreate(Sender: TObject);
Var
   r: TRegIniFile;
Begin

   (* ------------------------------------------------------ *)
   (* Fill combobox with history of previously used archives *)
   (* ------------------------------------------------------ *)
   r := TRegIniFile.Create(ZipTVDemoKey);
   Try
      r.ReadSection('ArchiveHistory', ComboBox1.Items);
   Finally
      r.Free();
   End;

   mnuAction1.Visible := False;
   mnuClose1.Enabled := False;

   {$IFDEF ListView}
   (* Initialize systems image list. *)
   (* Remember to 'DestroyImageList' *)
   (* before exiting the program!	 *)
   InitializeImageList(Self, ListView1);
   {$ENDIF ListView}
End;
//-------------------------------------------------------------

Procedure TfrmMain.FormClose(Sender: TObject; Var Action: TCloseAction);
Var
   i, j: Integer;
   r: TRegIniFile;
Begin
   r := TRegIniFile.Create(ZipTVDemoKey);
   Try
      (* delete previous key to allow storage in the same order as the *)
        (* current fDirList                                              *)
      TRegistry(r).DeleteKey('ArchiveHistory');

      j := ComboBox1.Items.Count - 1;

      If j > 7 Then
         j := 7;                        //15 items max of ComboBox1 saved
      For i := 0 To j Do
         r.WriteString('ArchiveHistory', ComboBox1.Items[i], '');

   Finally
      r.Free();
   End;
End;
//-------------------------------------------------------------
(* Destroy the system image list *)

Procedure TfrmMain.FormDestroy(Sender: TObject);
Begin
   {$IFDEF ListView}
   DestroyImageList(ListView1);
   {$ENDIF ListView}
End;
//-------------------------------------------------------------
(* This function assigns the variable CompressComponent to				*)
(* the desired compression component.  Variable CompressComponent   *)
(* is then used like the acutal component.                          *)
(*                                                                  *)
(* The ArcType property is assigned when the property "ArchiveFile" *)
(* is assigned a FileName.  ArcType is used to determine which      *)
(* component to assign to variable CompressComponent.               *)

Function TfrmMain.DefineCompressComponent: Boolean;
Begin
   CompressComponent := Nil;

   If Not ZipTV1.IsArcCompressable(ZipTV1.ArcType) Then
      ShowMessage('Compression not supported for this archive')
   Else
      Case ZipTV1.ArcType Of
         atBh: CompressComponent := BlakHole1;
         atCab: CompressComponent := MakeCab1;
         atJar: CompressComponent := Jar1;
         atLha, atLzh: CompressComponent := Lha1;
         atTar: CompressComponent := Tar1;
         atZip, //CompressComponent := Zip1;
         atZipMV:
         	Begin
            	CompressComponent := ZipSplitter1;
               ZipTV1.fArcType := atZipMV;
            End;
         {$IFDEF use_zlib}
         atZLib: CompressComponent := ZLib1;
         {$ENDIF}
      End;

   Result := Not (CompressComponent = Nil);
End;
//-------------------------------------------------------------
(* TPaintBox ( pbxLed ) component OnClick event -
   Set the Cancel property to True *)

Procedure TfrmMain.pbxLedClick(Sender: TObject);
Begin
   // activate the current component's cancel method
   DoCancel(True);

   StatusBar1.SimpleText := 'Aborting...';
   StatusBar1.Update();

   {$IFDEF ListView}
   ListView1.Cursor := crDefault;
   {$ELSE}
   ZipView1.Cursor := crDefault;
   {$ENDIF ListView}
End;
//-------------------------------------------------------------
(* ZipView's OnClick event -
  Display totals in the status bar for the current select row *)
//-------------------------------------------------------------

Procedure TfrmMain.ZipView1Click(Sender: TObject; Row, Col: Integer);
Begin
   //ShowMessage( ZipView1.Column[row, col] );
   If Length(ZipTV1.ArchiveFile) > 0 Then
      {$IFDEF ListView}
      If (ListView1.Selected <> Nil) Then
         {$ELSE}
      If (ZipView1.SelCount > 0) Then
         {$ENDIF}
         DisplayTotals(Selected)
      Else
         DisplayTotals(TOTALS);
End;
//-------------------------------------------------------------
(* ListView's OnClick event -
  Display totals in the status bar for the current select row *)
//-------------------------------------------------------------

⌨️ 快捷键说明

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