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

📄 optionfrm.pas

📁 === === === MiniHex 1.61 源程序说明 ============================== “$(MiniHex)Source”目录中的所有
💻 PAS
字号:
unit OptionFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, Misc, ChildFrm, StdCtrls,
  ComCtrls, ExtCtrls, ColorCbo, Global;

type
  TDblClickAct = (daNumBaseConv, daBkmkMgr);
  TMinimizeMode = (msTaskBar, msSysTray);

{ TOptionForm }

  TOptionForm = class(TForm)
    PageControl: TPageControl;
    NormalTabSheet: TTabSheet;
    OkButton: TButton;
    CancelButton: TButton;
    ApplyButton: TButton;
    HexEditFontDialog: TFontDialog;
    EditorTabSheet: TTabSheet;
    GroupBox1: TGroupBox;
    SetFontButton: TButton;
    GroupBox3: TGroupBox;
    AutoShowOpenCheckBox: TCheckBox;
    AddMenuCheckBox: TCheckBox;
    AllowMultiInsCheckBox: TCheckBox;
    GroupBox5: TGroupBox;
    DblClickActRadioGroup: TRadioGroup;
    MinModeRadioGroup: TRadioGroup;
    SaveWinSizeCheckBox: TCheckBox;
    DataSafeTabSheet: TTabSheet;
    GroupBox4: TGroupBox;
    PromptSaveCheckBox: TCheckBox;
    CreateBakCheckBox: TCheckBox;
    EditorOpenDialog: TOpenDialog;
    FontSamplePanel: TPanel;
    OtherTabSheet: TTabSheet;
    DataInspGroupBox: TGroupBox;
    ShowDataInspCheckBox: TCheckBox;
    ShowU8CheckBox: TCheckBox;
    ShowS8CheckBox: TCheckBox;
    ShowU16CheckBox: TCheckBox;
    ShowS16CheckBox: TCheckBox;
    ShowU32CheckBox: TCheckBox;
    ShowS32CheckBox: TCheckBox;
    ShowS64CheckBox: TCheckBox;
    ShowSingleCheckBox: TCheckBox;
    ShowDoubleCheckBox: TCheckBox;
    ShowReal48CheckBox: TCheckBox;
    ShowBinaryCheckBox: TCheckBox;
    Label13: TLabel;
    DefDataInspPosComboBox: TComboBox;
    Label14: TLabel;
    MaxUndoEdit: TEdit;
    MaxUndoUpDown: TUpDown;
    ScrollBox1: TScrollBox;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    AddrFColorCbo: TColorCbo;
    HexFColorCbo: TColorCbo;
    ChrFColorCbo: TColorCbo;
    BlockFColorCbo: TColorCbo;
    CurFColorCbo: TColorCbo;
    AddrBColorCbo: TColorCbo;
    HexBColorCbo: TColorCbo;
    ChrBColorCbo: TColorCbo;
    BlockBColorCbo: TColorCbo;
    CurBColorCbo: TColorCbo;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label3: TLabel;
    TempPathEdit: TEdit;
    TempPathBrowseButton: TButton;
    DefEditorEdit: TEdit;
    DefEditorBrowseButton: TButton;
    CharStyleRadioGroup: TRadioGroup;
    ShowPageHdrCheckBox: TCheckBox;
    TempPathDefaultButton: TButton;
    DefEditorDefaultButton: TButton;
    procedure SetFontButtonClick(Sender: TObject);
    procedure OkButtonClick(Sender: TObject);
    procedure CancelButtonClick(Sender: TObject);
    procedure ApplyButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TempPathBrowseButtonClick(Sender: TObject);
    procedure DefEditorBrowseButtonClick(Sender: TObject);
    procedure FontSamplePanelDblClick(Sender: TObject);
    procedure TempPathDefaultButtonClick(Sender: TObject);
    procedure DefEditorDefaultButtonClick(Sender: TObject);
    procedure EditorOptionChange(Sender: TObject);
  private
    { Private declarations }
    FEditorOptChanged: Boolean;

    procedure SetOptToUI;
    procedure GetOptFromUI;
  public
    { Public declarations }
  end;

var
  OptionForm: TOptionForm;

function ShowOptionForm(TabSheetIdx: Integer): Boolean;
procedure GetEditFontFromOpt(Font: TFont);

implementation

uses MainFrm, DataInspFrm, SysOptMgr;

{$R *.DFM}

function ShowOptionForm(TabSheetIdx: Integer): Boolean;
var
  Frm: TOptionForm;
begin
  Frm := TOptionForm.Create(Application);
  Frm.PageControl.ActivePage := Frm.PageControl.Pages[TabSheetIdx];
  Result := (Frm.ShowModal = mrOk);
  Frm.Free;
end;

procedure GetEditFontFromOpt(Font: TFont);
begin
  Font.Name := OptMgr.Values[SOptEditFontName];
  Font.Size := OptMgr.Values[SOptEditFontSize];
  Font.Style := TFontStyles(Byte(OptMgr.Values[SOptEditFontStyle]));
  Font.Color := OptMgr.Values[SOptEditFontColor];
  Font.Charset := OptMgr.Values[SOptEditFontCharset];
end;

{ TOptionForm }

procedure TOptionForm.SetOptToUI;
begin
  AutoShowOpenCheckBox.Checked := OptMgr.Values[SOptAutoShowOpen];
  AddMenuCheckBox.Checked := OptMgr.Values[SOptAddContextMenu];
  AllowMultiInsCheckBox.Checked := OptMgr.Values[SOptAllowMultiInst];
  SaveWinSizeCheckBox.Checked := OptMgr.Values[SOptSaveWinSize];
  ShowPageHdrCheckBox.Checked := OptMgr.Values[SOptAutoShowPageHdr];
  CharStyleRadioGroup.ItemIndex := OptMgr.Values[SOptDrawCharStyle];
  DblClickActRadioGroup.ItemIndex := OptMgr.Values[SOptDblClickAct];
  MinModeRadioGroup.ItemIndex := OptMgr.Values[SOptMinimizeMode];

  GetEditFontFromOpt(FontSamplePanel.Font);
  AddrFColorCbo.ColorValue := OptMgr.Values[SOptAddrFColor];
  AddrBColorCbo.ColorValue := OptMgr.Values[SOptAddrBColor];
  HexFColorCbo.ColorValue := OptMgr.Values[SOptHexFColor];
  HexBColorCbo.ColorValue := OptMgr.Values[SOptHexBColor];
  ChrFColorCbo.ColorValue := OptMgr.Values[SOptChrFColor];
  ChrBColorCbo.ColorValue := OptMgr.Values[SOptChrBColor];
  BlockFColorCbo.ColorValue := OptMgr.Values[SOptBlockFColor];
  BlockBColorCbo.ColorValue := OptMgr.Values[SOptBlockBColor];
  CurFColorCbo.ColorValue := OptMgr.Values[SOptCurItemFColor];
  CurBColorCbo.ColorValue := OptMgr.Values[SOptCurItemBColor];

  PromptSaveCheckBox.Checked := OptMgr.Values[SOptPromptSave];
  CreateBakCheckBox.Checked := OptMgr.Values[SOptCreateBak];
  MaxUndoUpDown.Position := OptMgr.Values[SOptMaxUndo];

  ShowDataInspCheckBox.Checked := OptMgr.Values[SOptShowDataInsp];
  ShowU8CheckBox.Checked := OptMgr.Values[SOptShowU8Data];
  ShowS8CheckBox.Checked := OptMgr.Values[SOptShowS8Data];
  ShowU16CheckBox.Checked := OptMgr.Values[SOptShowU16Data];
  ShowS16CheckBox.Checked := OptMgr.Values[SOptShowS16Data];
  ShowU32CheckBox.Checked := OptMgr.Values[SOptShowU32Data];
  ShowS32CheckBox.Checked := OptMgr.Values[SOptShowS32Data];
  ShowS64CheckBox.Checked := OptMgr.Values[SOptShowS64Data];
  ShowSingleCheckBox.Checked := OptMgr.Values[SOptShowSingleData];
  ShowDoubleCheckBox.Checked := OptMgr.Values[SOptShowDoubleData];
  ShowReal48CheckBox.Checked := OptMgr.Values[SOptShowReal48Data];
  ShowBinaryCheckBox.Checked := OptMgr.Values[SOptShowBinaryData];
  DefDataInspPosComboBox.ItemIndex := OptMgr.Values[SOptDefDataInspPos];

  TempPathEdit.Text := OptMgr.Values[SOptTempPath];
  DefEditorEdit.Text := OptMgr.Values[SOptDefEditor];
  FEditorOptChanged := False;
end;

procedure TOptionForm.GetOptFromUI;
begin
  OptMgr.Values[SOptAutoShowOpen] := AutoShowOpenCheckBox.Checked;
  OptMgr.Values[SOptAddContextMenu] := AddMenuCheckBox.Checked;
  OptMgr.Values[SOptAllowMultiInst] := AllowMultiInsCheckBox.Checked;
  OptMgr.Values[SOptSaveWinSize] := SaveWinSizeCheckBox.Checked;
  OptMgr.Values[SOptAutoShowPageHdr] := ShowPageHdrCheckBox.Checked;
  OptMgr.Values[SOptDrawCharStyle] := CharStyleRadioGroup.ItemIndex;
  OptMgr.Values[SOptDblClickAct] := DblClickActRadioGroup.ItemIndex;
  OptMgr.Values[SOptMinimizeMode] := MinModeRadioGroup.ItemIndex;

  OptMgr.Values[SOptEditFontName] := FontSamplePanel.Font.Name;
  OptMgr.Values[SOptEditFontSize] := FontSamplePanel.Font.Size;
  OptMgr.Values[SOptEditFontStyle] := Byte(FontSamplePanel.Font.Style);
  OptMgr.Values[SOptEditFontColor] := FontSamplePanel.Font.Color;
  OptMgr.Values[SOptEditFontCharset] := FontSamplePanel.Font.Charset;
  OptMgr.Values[SOptAddrFColor] := AddrFColorCbo.ColorValue;
  OptMgr.Values[SOptAddrBColor] := AddrBColorCbo.ColorValue;
  OptMgr.Values[SOptHexFColor] := HexFColorCbo.ColorValue;
  OptMgr.Values[SOptHexBColor] := HexBColorCbo.ColorValue;
  OptMgr.Values[SOptChrFColor] := ChrFColorCbo.ColorValue;
  OptMgr.Values[SOptChrBColor] := ChrBColorCbo.ColorValue;
  OptMgr.Values[SOptBlockFColor] := BlockFColorCbo.ColorValue;
  OptMgr.Values[SOptBlockBColor] := BlockBColorCbo.ColorValue;
  OptMgr.Values[SOptCurItemFColor] := CurFColorCbo.ColorValue;
  OptMgr.Values[SOptCurItemBColor] := CurBColorCbo.ColorValue ;

  OptMgr.Values[SOptPromptSave] := PromptSaveCheckBox.Checked;
  OptMgr.Values[SOptCreateBak] := CreateBakCheckBox.Checked;
  OptMgr.Values[SOptMaxUndo] := MaxUndoUpDown.Position;

  OptMgr.Values[SOptShowDataInsp] := ShowDataInspCheckBox.Checked;
  OptMgr.Values[SOptShowU8Data] := ShowU8CheckBox.Checked;
  OptMgr.Values[SOptShowS8Data] := ShowS8CheckBox.Checked;
  OptMgr.Values[SOptShowU16Data] := ShowU16CheckBox.Checked;
  OptMgr.Values[SOptShowS16Data] := ShowS16CheckBox.Checked;
  OptMgr.Values[SOptShowU32Data] := ShowU32CheckBox.Checked;
  OptMgr.Values[SOptShowS32Data] := ShowS32CheckBox.Checked;
  OptMgr.Values[SOptShowS64Data] := ShowS64CheckBox.Checked;
  OptMgr.Values[SOptShowSingleData] := ShowSingleCheckBox.Checked;
  OptMgr.Values[SOptShowDoubleData] := ShowDoubleCheckBox.Checked;
  OptMgr.Values[SOptShowReal48Data] := ShowReal48CheckBox.Checked;
  OptMgr.Values[SOptShowBinaryData] := ShowBinaryCheckBox.Checked;
  OptMgr.Values[SOptDefDataInspPos] := DefDataInspPosComboBox.ItemIndex;

  OptMgr.Values[SOptTempPath] := TempPathEdit.Text;
  OptMgr.Values[SOptDefEditor] := DefEditorEdit.Text;
end;

procedure TOptionForm.SetFontButtonClick(Sender: TObject);
begin
  HexEditFontDialog.Font.Assign(FontSamplePanel.Font);
  if HexEditFontDialog.Execute then
  begin
    FontSamplePanel.Font := HexEditFontDialog.Font;
    FEditorOptChanged := True;
  end;
end;

procedure TOptionForm.FormCreate(Sender: TObject);
begin
  SetOptToUI;
end;

procedure TOptionForm.OkButtonClick(Sender: TObject);
begin
  ApplyButtonClick(nil);
  ModalResult := mrOk;
end;

procedure TOptionForm.CancelButtonClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TOptionForm.ApplyButtonClick(Sender: TObject);
begin
  GetOptFromUI;
  OptMgr.Save;
  MainForm.AddToContentMenu(OptMgr.Values[SOptAddContextMenu]);
  MainForm.ChangeMaxUndo(OptMgr.Values[SOptMaxUndo]);
  if FEditorOptChanged then
    MainForm.ReDrawAllDoc;
  DataInspForm.AdjustItems;
  DataInspForm.AdjustPos;
end;

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

procedure TOptionForm.DefEditorBrowseButtonClick(Sender: TObject);
begin
  if EditorOpenDialog.Execute then
  begin
    DefEditorEdit.Text := EditorOpenDialog.FileName;
  end;
end;

procedure TOptionForm.TempPathDefaultButtonClick(Sender: TObject);
begin
  TempPathEdit.Text := GetWinTempDir;
end;

procedure TOptionForm.DefEditorDefaultButtonClick(Sender: TObject);
begin
  DefEditorEdit.Text := DefaultTextEditor;
end;

procedure TOptionForm.FontSamplePanelDblClick(Sender: TObject);
begin
  SetFontButtonClick(nil);
end;

procedure TOptionForm.EditorOptionChange(Sender: TObject);
begin
  FEditorOptChanged := True;
end;

end.

⌨️ 快捷键说明

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