📄 unit1.pas
字号:
Unit Unit1;
Interface
Uses
Windows,
Messages,
SysUtils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls,
ExtCtrls,
Buttons,
ComCtrls,
ztvRegister,
ztvBase,
ztvArchiveEditor,
Err_Msgs;
Type
TForm1 = Class(TForm)
ArchiveEditor1: TArchiveEditor;
OpenDialog1: TOpenDialog;
ListBox1: TListBox;
CheckBox1: TCheckBox;
Panel1: TPanel;
Panel2: TPanel;
Panel4: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
BitBtn1: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button4: TButton;
Memo1: TMemo;
Procedure ArchiveEditor1BatchSkipFile(Sender: TObject; OldFileName,
NewFileName: String; Index: Integer; Var SkipChange: Boolean);
Procedure ArchiveEditor1CommitFileName(Sender: TObject; NewFileName:
String; Index: Integer);
Procedure ArchiveEditor1Error(Sender: TObject; FileName, ExtendedMsg,
VolumeID: String; ECode: Integer);
Procedure ArchiveEditor1GetCompressedFileName(Sender: TObject; FileName:
String);
Procedure Button1Click(Sender: TObject);
Procedure Button2Click(Sender: TObject);
Procedure Button3Click(Sender: TObject);
Procedure Button4Click(Sender: TObject);
Procedure BitBtn1Click(Sender: TObject);
Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
Procedure Edit2Change(Sender: TObject);
Procedure Edit1KeyPress(Sender: TObject; Var Key: Char);
Private
{ Private declarations }
Public
{ Public declarations }
CurrentItemIndex: Integer;
Procedure CommitOrRollback;
Procedure EnableButtons;
End;
Var
Form1: TForm1;
Implementation
Uses
Unit2;
Const
BypassClick: Boolean = False;
{$R *.DFM}
//------------------------------------------------------------
Procedure TForm1.ArchiveEditor1BatchSkipFile(Sender: TObject; OldFileName,
NewFileName: String; Index: Integer; Var SkipChange: Boolean);
Begin
ListBox1.Items[Index] := OldFileName + ' -> ' + NewFileName;
End;
//------------------------------------------------------------
Procedure TForm1.ArchiveEditor1CommitFileName(Sender: TObject;
NewFileName: String; Index: Integer);
Begin
ListBox1.Items[Index] := NewFileName;
End;
//------------------------------------------------------------
Procedure TForm1.ArchiveEditor1Error(Sender: TObject; FileName, ExtendedMsg,
VolumeID: String; ECode: Integer);
Var
ShowStr: String;
Begin
ShowStr :=
LowerCase(Sender.Classname) + #13 +
LowerCase(TZipCommon(Sender).ArchiveFile) + #13 +
LowerCase(ExtractFilename(FileName)) + #13 +
IntToStr(ECode) + #13 +
LoadStr(ECode) + #13 +
ExtendedMsg;
ShowMessage(ShowStr);
End;
//------------------------------------------------------------
Procedure TForm1.ArchiveEditor1GetCompressedFileName(Sender: TObject;
FileName: String);
Begin
ListBox1.Items.Add(FileName);
End;
//------------------------------------------------------------
Procedure TForm1.Button1Click(Sender: TObject);
Var
_ItemIndex,
_TopIndex: Integer;
Begin
_ItemIndex := ListBox1.ItemIndex;
_TopIndex := ListBox1.TopIndex;
ArchiveEditor1.RecurseDirs := CheckBox1.Checked;
ArchiveEditor1.BatchRenameFiles(Edit2.Text, Edit3.Text, Edit4.Text);
EnableButtons();
ListBox1.ItemIndex := _ItemIndex;
ListBox1.TopIndex := _TopIndex;
End;
//------------------------------------------------------------
Procedure TForm1.Button2Click(Sender: TObject);
Begin
If ArchiveEditor1.inEditMode And ArchiveEditor1.ArchiveChanged() Then
If MessageDlg('Commit updates?', mtConfirmation, [mbYes, mbNo], 0) = mrYes Then
Begin
ArchiveEditor1.CommitUpdates();
EnableButtons();
End;
End;
//------------------------------------------------------------
Procedure TForm1.Button3Click(Sender: TObject);
Var
c: Char;
Begin
If ArchiveEditor1.inEditMode Then
If MessageDlg('Rollback changes?', mtConfirmation, [mbYes, mbNo], 0) = mrYes Then
Begin
ArchiveEditor1.RollBack();
c := #13;
Edit1KeyPress(Sender, c); // reload file
End;
End;
//------------------------------------------------------------
Procedure TForm1.Button4Click(Sender: TObject);
Begin
frmTestArchive.ShowModal();
End;
//------------------------------------------------------------
Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction);
Begin
CommitOrRollback();
End;
//------------------------------------------------------------
Procedure TForm1.CommitOrRollback;
Var
Index: Integer;
Begin
If ArchiveEditor1.inEditMode Then
Begin
Index := ListBox1.TopIndex;
If ArchiveEditor1.ArchiveChanged() Then
Begin
If MessageDlg('Commit updates?', mtConfirmation, [mbYes, mbNo], 0) = mrYes Then
ArchiveEditor1.CommitUpdates()
Else
ArchiveEditor1.RollBack();
End
Else
ArchiveEditor1.RollBack();
EnableButtons();
ListBox1.TopIndex := Index;
End;
End;
//------------------------------------------------------------
Procedure TForm1.EnableButtons;
Begin
Button1.Enabled := ArchiveEditor1.inEditMode And
(Not ArchiveEditor1.ArchiveChanged());
Button2.Enabled := ArchiveEditor1.ArchiveChanged();
Button3.Enabled := Button2.Enabled;
If Button2.Enabled Then
Button2.Caption := 'Commit Updates'
Else
Button2.Caption := 'Unchanged';
End;
//------------------------------------------------------------
Procedure TForm1.BitBtn1Click(Sender: TObject);
Var
c: Char;
Begin
CommitOrRollback();
ListBox1.Clear();
OpenDialog1.InitialDir := ExtractFileDir(Edit1.Text);
OpenDialog1.FileName := Edit1.Text;
OpenDialog1.Filter := LoadStr(F_TZIPTV);
OpenDialog1.Title := 'Select archive to edit...';
OpenDialog1.Options := [ofHideReadOnly, ofFileMustExist, ofPathMustExist];
If OpenDialog1.Execute() Then
Begin
Edit1.Text := OpenDialog1.FileName;
c := #13;
Edit1KeyPress(Sender, c); // reload file
End
Else
Begin
Edit1.Text := '';
EnableButtons();
End;
End;
//------------------------------------------------------------
Procedure TForm1.Edit2Change(Sender: TObject);
Begin
Button1.Enabled := (Edit2.Text <> '') And (Edit3.Text <> '');
End;
//------------------------------------------------------------
Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
// 1. set the ArchiveFile property
// 2. initialize the edit of this archive by calling the StartEdit method
Begin
If (Key = #13) And FileExists(Edit1.Text) Then
Begin
CommitOrRollback();
ListBox1.Clear();
ArchiveEditor1.ArchiveFile := Edit1.Text;
Button4.Enabled := ArchiveEditor1.IsArcValid(ArchiveEditor1.ArcType);
If Button4.Enabled Then
ArchiveEditor1.StartEdit();
EnableButtons();
End;
End;
//------------------------------------------------------------
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -