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

📄 filecombinfrm.pas

📁 MiniHex 1.1 源程序说明 “MiniHex11SrcSource”目录中的所有文件是MiniHex 1.1的主程序; “MiniHex11SrcControls”目录中的是该软件
💻 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 + -