📄 compress.pas
字号:
unit Compress;
{ $Log: D:\Util\GP-Version\Archives\VCLZip Zip Utility\UNZIP\Compress.UFV
{
{ Rev 1.2 Sun 10 May 1998 16:54:57 Supervisor Version: 2.12
{ Version 2.12
}
{
{ Rev 1.1 Tue 24 Mar 1998 19:03:56 Supervisor
{ Modifications to allow storing filenames and paths in DOS
{ 8.3 format
}
interface
uses
{$IFDEF WIN32}
Windows,
{$ELSE}
WinTypes, WinProcs,
{$ENDIF}
SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, Dialogs, FileCtrl, Spin;
type
TCompressDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Bevel1: TBevel;
ZipFileGroup: TGroupBox;
ZipFilename: TEdit;
ZipFileBtn: TBitBtn;
GroupBox1: TGroupBox;
SelectFilesBtn: TBitBtn;
SelectedFiles: TComboBox;
GroupBox2: TGroupBox;
RootDirBtn: TBitBtn;
RootDir: TEdit;
RecurseChk: TCheckBox;
Label6: TLabel;
Password: TEdit;
Label1: TLabel;
ZipAction: TComboBox;
Label2: TLabel;
SaveDirInfoChk: TCheckBox;
ClearBtn: TBitBtn;
DeleteBtn: TBitBtn;
GetZipFileDlg: TSaveDialog;
Wildcards: TEdit;
AddWildCardBtn: TBitBtn;
SpinButton1: TSpinButton;
CompLevel: TLabel;
DisposeChk: TCheckBox;
MultiMode: TComboBox;
MultiModeLabel: TLabel;
SaveVolumesChk: TCheckBox;
FirstBlockSize: TEdit;
BlockSize: TEdit;
WriteDiskLabelsChk: TCheckBox;
FirstDiskLabel: TLabel;
Label4: TLabel;
RelativeDir: TCheckBox;
FileSelectDlg: TOpenDialog;
Store83Format: TCheckBox;
Label5: TLabel;
SaveZipInfoChk: TCheckBox;
procedure ZipFileBtnClick(Sender: TObject);
procedure SelectFilesBtnClick(Sender: TObject);
procedure RootDirBtnClick(Sender: TObject);
procedure ClearBtnClick(Sender: TObject);
procedure AddWildCardBtnClick(Sender: TObject);
procedure WildcardsChange(Sender: TObject);
procedure SpinButton1DownClick(Sender: TObject);
procedure SpinButton1UpClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DeleteBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure SaveDirInfoChkClick(Sender: TObject);
procedure MultiModeChange(Sender: TObject);
procedure RootDirChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
CompressDlg: TCompressDlg;
saveFirstBlockSize: String;
implementation
{$R *.DFM}
procedure TCompressDlg.ZipFileBtnClick(Sender: TObject);
var
tmpZipName: String;
begin
If (GetZipFileDlg.Execute) then
begin
tmpZipName := GetZipFileDlg.Filename;
If UpperCase(ExtractFileExt(tmpZipName)) <> '.ZIP' then
ChangeFileExt( tmpZipName, '.zip' );
ZipFilename.Text := tmpZipName;
end;
end;
procedure TCompressDlg.SelectFilesBtnClick(Sender: TObject);
var
i: Integer;
begin
FileSelectDlg.Files.Clear;
FileSelectDlg.Filename := '';
{$IFNDEF WIN32}
FileSelectDlg.Options := FileSelectDlg.Options - [ofNoValidate];
FileSelectDlg.Title := 'Select File(s) to be compressed';
{$ENDIF}
If (FileSelectDlg.Execute) then
For i := 0 to FileSelectDlg.Files.Count-1 do
If SelectedFiles.Items.IndexOf(FileSelectDlg.Files[i]) = -1 then
SelectedFiles.Items.Add( FileSelectDlg.Files[i] );
end;
procedure TCompressDlg.RootDirBtnClick(Sender: TObject);
var
theDir: String;
begin
theDir := 'C:\';
If SelectDirectory(theDir, [sdAllowCreate, sdPerformCreate, sdPrompt], 0) then
RootDir.Text := theDir;
end;
procedure TCompressDlg.ClearBtnClick(Sender: TObject);
begin
SelectedFiles.Clear;
end;
procedure TCompressDlg.AddWildCardBtnClick(Sender: TObject);
begin
SelectedFiles.Items.Add(WildCards.Text);
WildCards.Text := '';
AddWildCardBtn.Enabled := False;
end;
procedure TCompressDlg.WildcardsChange(Sender: TObject);
begin
AddWildCardBtn.Enabled := Length( Wildcards.Text ) > 0;
end;
procedure TCompressDlg.SpinButton1DownClick(Sender: TObject);
var
Value: Integer;
begin
Value := StrToInt(CompLevel.Caption) - 1;
If (Value >= 0) and (Value < 10) then
CompLevel.Caption := IntToStr(Value);
end;
procedure TCompressDlg.SpinButton1UpClick(Sender: TObject);
var
Value: Integer;
begin
Value := StrToInt(CompLevel.Caption) + 1;
If (Value > 0) and (Value < 10) then
CompLevel.Caption := IntToStr(Value);
end;
procedure TCompressDlg.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
If (ModalResult = mrOK) and (SelectedFiles.Items.Count = 0) then
begin
ShowMessage('No files have been specified to be compressed');
Action := caNone;
end;
end;
procedure TCompressDlg.DeleteBtnClick(Sender: TObject);
begin
SelectedFiles.Items.Delete( SelectedFiles.ItemIndex );
end;
procedure TCompressDlg.FormActivate(Sender: TObject);
begin
AddWildCardBtn.Enabled := False;
MultiMode.ItemIndex := 0;
MultiModeChange( Self );
saveFirstBlockSize := FirstBlockSize.Text;
end;
procedure TCompressDlg.SaveDirInfoChkClick(Sender: TObject);
begin
If SaveDirInfoChk.Checked then
SaveVolumesChk.Enabled := True
Else
begin
SaveVolumesChk.Checked := False;
SaveVolumesChk.Enabled := False;
end;
RelativeDir.Enabled := (RootDir.Text <> '') and (SaveDirInfoChk.Checked);
end;
procedure TCompressDlg.MultiModeChange(Sender: TObject);
begin
Case MultiMode.ItemIndex of
0: begin { mmNone }
BlockSize.Enabled := False;
FirstBlockSize.Enabled := False;
WriteDiskLabelsChk.Enabled := False;
end;
1: begin { mmSpan }
BlockSize.Enabled := False;
FirstBlockSize.Enabled := True;
FirstBlockSize.Text := '0';
FirstDiskLabel.Caption := 'Save Space on First Disk';
WriteDiskLabelsChk.Enabled := True;
end;
2: begin { mmBlocks }
BlockSize.Enabled := True;
FirstBlockSize.Enabled := True;
FirstBlockSize.Text := saveFirstBlockSize;
FirstDiskLabel.Caption := 'First Block Size';
WriteDiskLabelsChk.Enabled := False;
end;
end;
end;
procedure TCompressDlg.RootDirChange(Sender: TObject);
begin
RelativeDir.Enabled := (RootDir.Text <> '') and (SaveDirInfoChk.Checked);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -