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

📄 toolsmgrfrm.pas

📁 MiniHex 1.1 源程序说明 “MiniHex11SrcSource”目录中的所有文件是MiniHex 1.1的主程序; “MiniHex11SrcControls”目录中的是该软件
💻 PAS
字号:
unit ToolsMgrFrm;

interface

uses
  Windows, Messages, SysUtils, Classes,
  Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ToolsMgr;

type
  TToolsMgrForm = class(TForm)
    ToolsListBox: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    TitleEdit: TEdit;
    CmdLineEdit: TEdit;
    ParaEdit: TEdit;
    WorkDirEdit: TEdit;
    RunModeComboBox: TComboBox;
    BrowseCmdLineButton: TButton;
    BrowseWorkDirButton: TButton;
    Bevel1: TBevel;
    CloseButton: TButton;
    AddButton: TButton;
    MoveUpButton: TButton;
    MoveDownButton: TButton;
    ClearButton: TButton;
    DeleteButton: TButton;
    OpenDialog: TOpenDialog;
    ReplaceButton: TButton;
    procedure CloseButtonClick(Sender: TObject);
    procedure AddButtonClick(Sender: TObject);
    procedure MoveUpButtonClick(Sender: TObject);
    procedure MoveDownButtonClick(Sender: TObject);
    procedure ClearButtonClick(Sender: TObject);
    procedure DeleteButtonClick(Sender: TObject);
    procedure BrowseCmdLineButtonClick(Sender: TObject);
    procedure BrowseWorkDirButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ReplaceButtonClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ToolsListBoxDblClick(Sender: TObject);
  private
    { Private declarations }
    procedure ClearControls;
    procedure FillToolsListBox;
    function ReadControls: TToolsItem;
    function CheckValid: Boolean;
  public
    { Public declarations }
  end;

var
  ToolsMgrForm: TToolsMgrForm;

procedure ShowToolsMgrForm;

implementation

{$R *.DFM}

uses
  Misc;

procedure ShowToolsMgrForm;
var
  Frm: TToolsMgrForm;
begin
  Frm := TToolsMgrForm.Create(Application);
  Frm.ShowModal;
  Frm.Free;
end;

procedure TToolsMgrForm.ClearControls;
begin
  TitleEdit.Text := '';
  CmdLineEdit.Text := '';
  ParaEdit.Text := '';
  WorkDirEdit.Text := '';
  RunModeComboBox.ItemIndex := 0;
end;

procedure TToolsMgrForm.FillToolsListBox;
var
  i: Integer;
begin
  ToolsListBox.Items.BeginUpdate;
  ToolsListBox.Items.Clear;
  for i := 0 to Length(ToolsManager.Items) - 1 do
  begin
    ToolsListBox.Items.Add(ToolsManager.Items[i].Title);
  end;
  ToolsListBox.Items.EndUpdate;
end;

function TToolsMgrForm.ReadControls: TToolsItem;
begin
  Result.Title := TitleEdit.Text;
  Result.CmdLine := CmdLineEdit.Text;
  Result.Para := ParaEdit.Text;
  Result.WorkDir := WorkDirEdit.Text;
  Result.RunMode := RunModeComboBox.ItemIndex;
end;

function TToolsMgrForm.CheckValid: Boolean;
begin
  Result := True;
  if TitleEdit.Text = '' then
  begin
    Result := False;
    TitleEdit.SetFocus;
    Exit;
  end;
  if CmdLineEdit.Text = '' then
  begin
    Result := False;
    CmdLineEdit.SetFocus;
    Exit;
  end;
end;

procedure TToolsMgrForm.FormCreate(Sender: TObject);
begin
  ClearControls;
  FillToolsListBox;
end;

procedure TToolsMgrForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  ToolsManager.Save;
end;

procedure TToolsMgrForm.CloseButtonClick(Sender: TObject);
begin
  Close;
end;

procedure TToolsMgrForm.AddButtonClick(Sender: TObject);
var
  Item: TToolsItem;
begin
  if not CheckValid then Exit;
  Item := ReadControls;
  ToolsManager.AddItem(Item);
  ToolsListBox.Items.Add(Item.Title);
  ToolsListBox.ItemIndex := ToolsListBox.Items.Count - 1;
  ClearControls;
  TitleEdit.SetFocus;
end;

procedure TToolsMgrForm.ReplaceButtonClick(Sender: TObject);
var
  i: Integer;
  Item: TToolsItem;
begin
  i := ToolsListBox.ItemIndex;
  if i = -1 then Exit;
  if not CheckValid then Exit;
  Item := ReadControls;
  ToolsManager.ModifyItem(i, Item);
  ToolsListBox.Items[i] := Item.Title;
  TitleEdit.SetFocus;
end;

procedure TToolsMgrForm.MoveUpButtonClick(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  if ToolsListBox.ItemIndex = -1 then Exit;
  i := ToolsListBox.ItemIndex;
  if i > 0 then
  begin
    ToolsManager.MoveUp(i);
    s := ToolsListBox.Items[i-1];
    ToolsListBox.Items[i-1] := ToolsListBox.Items[i];
    ToolsListBox.Items[i] := s;
    ToolsListBox.ItemIndex := i - 1;
  end;
end;

procedure TToolsMgrForm.MoveDownButtonClick(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  if ToolsListBox.ItemIndex = -1 then Exit;
  i := ToolsListBox.ItemIndex;
  if i < ToolsListBox.Items.Count - 1 then
  begin
    ToolsManager.MoveDown(i);
    s := ToolsListBox.Items[i+1];
    ToolsListBox.Items[i+1] := ToolsListBox.Items[i];
    ToolsListBox.Items[i] := s;
    ToolsListBox.ItemIndex := i + 1;
  end;
end;

procedure TToolsMgrForm.ClearButtonClick(Sender: TObject);
var
  R: Integer;
begin
  R := MessageBox(Handle, '真的清空所有项目吗?', '提示', 48);
  if R = ID_YES then
  begin
    ToolsManager.ClearItems;
    ToolsListBox.Items.Clear;
  end;
end;

procedure TToolsMgrForm.DeleteButtonClick(Sender: TObject);
var
  i: Integer;
begin
  if ToolsListBox.ItemIndex = -1 then Exit;
  i := ToolsListBox.ItemIndex;
  ToolsManager.DeleteItem(i);
  ToolsListBox.Items.Delete(i);
  if i > ToolsListBox.Items.Count - 1 then
    i := ToolsListBox.Items.Count - 1;
  ToolsListBox.ItemIndex := i;
end;

procedure TToolsMgrForm.BrowseCmdLineButtonClick(Sender: TObject);
begin
  if OpenDialog.Execute then
  begin
    CmdLineEdit.Text := OpenDialog.FileName;
  end;
end;

procedure TToolsMgrForm.BrowseWorkDirButtonClick(Sender: TObject);
var
  Path: string;
  Ok: Boolean;
begin
  Path := '';
  Ok := SelectDir(Handle, '请选择一个文件夹:', '', Path);
  if Ok then WorkDirEdit.Text := AddDirSuffix(Path);
end;

procedure TToolsMgrForm.ToolsListBoxDblClick(Sender: TObject);
var
  i: Integer;
begin
  i := ToolsListBox.ItemIndex;
  if i = -1 then Exit;
  TitleEdit.Text := ToolsManager.Items[i].Title;
  CmdLineEdit.Text := ToolsManager.Items[i].CmdLine;
  ParaEdit.Text := ToolsManager.Items[i].Para;
  WorkDirEdit.Text := ToolsManager.Items[i].WorkDir;
  RunModeComboBox.ItemIndex:= ToolsManager.Items[i].RunMode;
end;

end.

⌨️ 快捷键说明

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