📄 filecombinfrm.pas
字号:
unit FileCombinFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TFileCombinForm = class(TForm)
OkButton: TButton;
CanclButton: TButton;
Label1: TLabel;
ToFileEdit: TEdit;
BrowseToFileButton: TButton;
OpenDialog: TOpenDialog;
Label2: TLabel;
FromFileEdit: TEdit;
BrowseFromFileButton: TButton;
FilesListBox: TListBox;
AddButton: TButton;
DeleteButton: TButton;
ClearButton: TButton;
MoveDownButton: TButton;
MoveUpButton: TButton;
SaveDialog: TSaveDialog;
procedure BrowseFromFileButtonClick(Sender: TObject);
procedure AddButtonClick(Sender: TObject);
procedure DeleteButtonClick(Sender: TObject);
procedure ClearButtonClick(Sender: TObject);
procedure MoveUpButtonClick(Sender: TObject);
procedure MoveDownButtonClick(Sender: TObject);
procedure BrowseToFileButtonClick(Sender: TObject);
procedure OkButtonClick(Sender: TObject);
procedure CanclButtonClick(Sender: TObject);
procedure FromFileEditKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
function CheckValid: Boolean;
function Combin: Boolean;
public
{ Public declarations }
end;
var
FileCombinForm: TFileCombinForm;
procedure ShowFileCombinForm;
implementation
{$R *.DFM}
procedure ShowFileCombinForm;
var
Frm: TFileCombinForm;
begin
Frm := TFileCombinForm.Create(Application);
Frm.ShowModal;
Frm.Free;
end;
function TFileCombinForm.CheckValid: Boolean;
begin
Result := True;
if ToFileEdit.Text = '' then
begin
Result := False;
ToFileEdit.SetFocus;
Exit;
end;
if FilesListBox.Items.Count = 0 then
begin
Result := False;
FromFileEdit.SetFocus;
Exit;
end;
end;
function TFileCombinForm.Combin: Boolean;
var
FromFileName: string;
ToFileName: string;
i: Integer;
FromFile, ToFile: TFileStream;
begin
ToFileName := ToFileEdit.Text;
try
ToFile := TFileStream.Create(ToFileName, fmCreate);
except
MessageBox(Handle, '写文件失败。', '错误', 16);
Result := False;
Exit;
end;
try
for i := 0 to FilesListBox.Items.Count - 1 do
begin
FromFileName := FilesListBox.Items[i];
if not FileExists(FromFileName) then
begin
MessageBox(Handle, PChar('文件 ' + FromFileName + ' 不存在。'), '提示', 48);
end else
begin
try
FromFile := TFileStream.Create(FromFileName, fmOpenRead);
ToFile.CopyFrom(FromFile, 0);
FromFile.Free;
except
MessageBox(Handle, '无法打开文件。', '提示', 48);
end;
end;
end;
finally
ToFile.Free;
end;
Result := True;
end;
procedure TFileCombinForm.BrowseFromFileButtonClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
FromFileEdit.Text := OpenDialog.FileName;
FromFileEdit.SetFocus;
end;
end;
procedure TFileCombinForm.AddButtonClick(Sender: TObject);
begin
if FromFileEdit.Text = '' then Exit;
FilesListBox.Items.Add(FromFileEdit.Text);
FromFileEdit.Text := '';
FromFileEdit.SetFocus;
end;
procedure TFileCombinForm.DeleteButtonClick(Sender: TObject);
begin
if FilesListBox.ItemIndex = -1 then Exit;
FilesListBox.Items.Delete(FilesListBox.ItemIndex);
end;
procedure TFileCombinForm.ClearButtonClick(Sender: TObject);
begin
FilesListBox.Items.Clear;
end;
procedure TFileCombinForm.MoveUpButtonClick(Sender: TObject);
var
i: Integer;
s: string;
begin
if FilesListBox.ItemIndex = -1 then Exit;
i := FilesListBox.ItemIndex;
if i > 0 then
begin
s := FilesListBox.Items[i-1];
FilesListBox.Items[i-1] := FilesListBox.Items[i];
FilesListBox.Items[i] := s;
FilesListBox.ItemIndex := i - 1;
end;
end;
procedure TFileCombinForm.MoveDownButtonClick(Sender: TObject);
var
i: Integer;
s: string;
begin
if FilesListBox.ItemIndex = -1 then Exit;
i := FilesListBox.ItemIndex;
if i < FilesListBox.Items.Count - 1 then
begin
s := FilesListBox.Items[i+1];
FilesListBox.Items[i+1] := FilesListBox.Items[i];
FilesListBox.Items[i] := s;
FilesListBox.ItemIndex := i + 1;
end;
end;
procedure TFileCombinForm.BrowseToFileButtonClick(Sender: TObject);
begin
if SaveDialog.Execute then
ToFileEdit.Text := SaveDialog.FileName;
end;
procedure TFileCombinForm.OkButtonClick(Sender: TObject);
begin
if CheckValid then
begin
Combin;
ModalResult := mrOk;
end;
end;
procedure TFileCombinForm.CanclButtonClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
procedure TFileCombinForm.FromFileEditKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
AddButtonClick(nil);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -