📄 optionfrm.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 + -