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

📄 mainfrm.pas

📁 MiniHex 1.1 源程序说明 “MiniHex11SrcSource”目录中的所有文件是MiniHex 1.1的主程序; “MiniHex11SrcControls”目录中的是该软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  end;
end;

procedure TMHMainForm.ChangeMaxUndo(Value: Integer);
var
  i: Integer;
  Frm: THexChForm;
begin
  for i := 0 to Self.MDIChildCount - 1 do
  begin
    if Self.MDIChildren[i] is THexChForm then
    begin
      Frm := Self.MDIChildren[i] as THexChForm;
      Frm.ChangeMaxUndo(Value);
    end;
  end;
end;

procedure TMHMainForm.FormCreate(Sender: TObject);
var
  IniFileName: string;
  IsWin9598: Boolean;
begin
  IniFileName := GetIniFileName;
  IniManager := TIniMgr.Create(IniFileName);
  MRUManager := TMRUMgr.Create(IniFileName);
  ToolsManager := TToolsMgr.Create(IniFileName);
  BkmkManager := TBkmkMgr.Create(GetBookmarkFileName);
  Application.OnMinimize := AppMinimize;
  OptionFrm.LoadOptions;
  if Options.AddContextMenu then AddToContentMenu(True);
  InitMRUMenuItem;
  InitToolsMenuItem;
  LoadFormRect;
  ShowStatusMsg('');
  IsWin9598 := CheckWindows9598;
  ToolDiskReadItem.Enabled := IsWin9598;
  ToolDiskWriteItem.Enabled := IsWin9598;
end;

procedure TMHMainForm.FormActivate(Sender: TObject);
const
  First: Boolean = True;
begin
  if First then
  begin
    First := False;
    TimerTimer(nil);
    if not DoParam then
      if Options.AutoShowOpen then OpenActExecute(nil);
    if Options.ShowDataInsp then ShowDataInsp(True);
  end;
end;

procedure TMHMainForm.FormShow(Sender: TObject);
begin
//
end;

procedure TMHMainForm.FormDestroy(Sender: TObject);
begin
  SaveFormRect;
  IniManager.Free;
  MRUManager.Free;
  ToolsManager.Free;
  BkmkManager.Free;
  GlobalDeleteAtom(CheckPreInsAtom);
end;

procedure TMHMainForm.FormResize(Sender: TObject);
begin
  StatusBar.Panels[0].Width := StatusBar.Width - 115;
end;

procedure TMHMainForm.NewActExecute(Sender: TObject);
var
  Frm: THexChForm;
  BufSize: Integer;
begin
  BufSize := 1024;
  if ShowSetSizeForm(BufSize, '新建', '长度(字节):') then
  begin
    Frm := THexChForm.Create(Self);
    Frm.Caption := DefaultFileName;
    if not Frm.NewBuf(BufSize) then Frm.Free;
  end;
end;

procedure TMHMainForm.OpenActExecute(Sender: TObject);
var
  i: Integer;
begin
  if OpenFileDialog.Execute then
  begin
    for i := 0 to OpenFileDialog.Files.Count - 1 do
    begin
      OpenFile(OpenFileDialog.Files[i]);
    end;
  end;
end;

procedure TMHMainForm.SaveActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm <> nil then Frm.Save;
end;

procedure TMHMainForm.SaveAllActExecute(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Self.MDIChildCount - 1 do
  begin
    if Self.MDIChildren[i] is THexChForm then
      (Self.MDIChildren[i] as THexChForm).Save;
  end;
end;

procedure TMHMainForm.SaveAsActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm <> nil then Frm.SaveAs;
end;

procedure TMHMainForm.CloseActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm <> nil then Frm.Close;
end;

procedure TMHMainForm.CloseAllActExecute(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Self.MDIChildCount - 1 do
  begin
    if Self.MDIChildren[i] is THexChForm then
      (Self.MDIChildren[i] as THexChForm).Close;
  end;
end;

procedure TMHMainForm.ExecuteActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm = nil then Exit;
  Frm.Execute;
end;

procedure TMHMainForm.EditorActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm = nil then Exit;
  Frm.OpenWidthEditor;
end;

procedure TMHMainForm.PropertyActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm <> nil then
  begin
    ShowFilePropForm(Frm.FileName);
  end;
end;

procedure TMHMainForm.PrintActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm = nil then Exit;
  Frm.Print;
end;

procedure TMHMainForm.FilePrintSetupItemClick(Sender: TObject);
begin
  try
    PrinterSetupDialog.Execute;
  except
    MessageBox(Application.Handle, '无法进行打印机设置,请检查是否安装了打印机。', '错误', 16);
  end;
end;

procedure TMHMainForm.ExportActExecute(Sender: TObject);
var
  Frm: THexChForm;
begin
  Frm := GetCurDoc;
  if Frm = nil then Exit;
  Frm.ExportToText;
end;

procedure TMHMainForm.OpenFolderActExecute(Sender: TObject);
var
  Path: string;
  Ok: Boolean;
  SR: TSearchRec;
  Done: Integer;
begin
  Path := '';
  Ok := SelectDir(Handle, '请选择一个文件夹:', '', Path);
  if Ok then
  begin
    Path := AddDirSuffix(Path);
    Done := FindFirst(Path + '*.*', faAnyFile - faDirectory - faVolumeID, SR);
    while Done = 0 do
    begin
      OpenFile(Path + SR.Name);
      Done := FindNext(SR);
    end;
    FindClose(SR);
  end;
end;

procedure TMHMainForm.QuitActExecute(Sender: TObject);
begin
  Close;
end;

procedure TMHMainForm.OptionsActExecute(Sender: TObject);
begin
  ShowOptionForm(0);
end;

procedure TMHMainForm.ToolsMgrActExecute(Sender: TObject);
begin
  ShowToolsMgrForm;
  InitToolsMenuItem;
end;

procedure TMHMainForm.WinMgrActExecute(Sender: TObject);
begin
  ShowWinMgrForm;
end;

procedure TMHMainForm.WinCascActExecute(Sender: TObject);
begin
  Self.Cascade;
end;

procedure TMHMainForm.WinHoriTileActExecute(Sender: TObject);
begin
  Self.TileMode := tbHorizontal;	
  Self.Tile;
end;

procedure TMHMainForm.WinVertTileActExecute(Sender: TObject);
begin
  Self.TileMode := tbVertical;
  Self.Tile;
end;

procedure TMHMainForm.WinArrangeActExecute(Sender: TObject);
begin
  Self.ArrangeIcons;
end;

procedure TMHMainForm.WinBestActExecute(Sender: TObject);
var
  i: Integer;
  Frm: THexChForm;
begin
  Self.Cascade;
  for i := 0 to Self.MDIChildCount - 1 do
  begin
    if Self.MDIChildren[i] is THexChForm then
    begin
      Frm := Self.MDIChildren[i] as THexChForm;
      Frm.SetBestSize;
    end;
  end;
end;

procedure TMHMainForm.HelpContentActExecute(Sender: TObject);
begin
  ShowHelp;
end;

procedure TMHMainForm.HelpGPLItemClick(Sender: TObject);
begin
  Application.HelpContext(101);
end;

procedure TMHMainForm.AboutActExecute(Sender: TObject);
begin
  ShowAboutForm;
end;

procedure TMHMainForm.HelpHomePageItemClick(Sender: TObject);
begin
  ShellExecute(Handle, 'Open', 'http://haoxg.yeah.net', '', '', 1);
end;

procedure TMHMainForm.HelpEmailItemClick(Sender: TObject);
var
  S: string;
begin
  S := 'About ' + MINIHEX_VERSION_INFO;
  ShellExecute(Handle, 'Open', PChar('mailto:haoxg@21cn.com?subject="' + S + '"'), '', '', 1);
end;

procedure TMHMainForm.ViewToolBarItemClick(Sender: TObject);
begin
  ShowToolBar(not ViewToolBarItem.Checked);
end;

procedure TMHMainForm.ViewStatusBarItemClick(Sender: TObject);
begin
  ShowStatusBar(not ViewStatusBarItem.Checked);
end;

procedure TMHMainForm.DataInspectorActExecute(Sender: TObject);
begin
  ShowDataInsp(not ViewDataInspItem.Checked);
end;

procedure TMHMainForm.OnTopActExecute(Sender: TObject);
begin
  SetOnTop(not OnTopAct.Checked);
end;

procedure TMHMainForm.ToolFileSplitItemClick(Sender: TObject);
begin
  ShowFileSplitForm;
end;

procedure TMHMainForm.ToolFileCombinItemClick(Sender: TObject);
begin
  ShowFileCombinForm;
end;

procedure TMHMainForm.ToolDiskReadItemClick(Sender: TObject);
var
  Frm: THexChForm;
  Data: TDiskIOData;
begin
  if ShowDiskIOForm(True, Data) then
  begin
    Frm := THexChForm.Create(Self);
    Frm.Caption := UpperCase(Data.Drive + ':  扇区 ' + IntToStr(Data.FromSector) + ' - ' +  IntToStr(Data.FromSector+Data.SectorCount-1));
    if not Frm.LoadFromDiskSector(Data.Drive, Data.FromSector, Data.SectorCount) then
    begin
      Frm.Free;
      MessageBox(Handle, '读磁盘扇区失败。', '错误', 48);
    end;
  end;
end;

procedure TMHMainForm.ToolDiskWriteItemClick(Sender: TObject);
var
  Frm: THexChForm;
  Data: TDiskIOData;
  R: Integer;
begin
  Frm := GetCurDoc;
  if Frm = nil then Exit;
  if ShowDiskIOForm(False, Data) then
  begin
    if Options.AskWriteSector then
    begin
      R := MessageBox(Handle, '将数据写入磁盘有可能导致磁盘损坏,继续吗?', '警告', 36+256);
      if R = ID_NO then Exit;
    end;
    if not Frm.SaveToDiskSector(Data.Drive, Data.FromSector) then
      MessageBox(Handle, '写磁盘扇区失败。', '错误', 48);
  end;
end;

procedure TMHMainForm.ToolCMOSReadItemClick(Sender: TObject);
var
  Frm: THexChForm;
  DataSize: Integer;
begin
  DataSize := CMOS_DEFAULT_DATASIZE;
  if ShowSetSizeForm(DataSize, 'CMOS数据长度', 'CMOS数据长度(字节):') then
  begin
    Frm := THexChForm.Create(Self);
    Frm.Caption := 'CMOS';
    Frm.LoadFromCMOS(DataSize);
  end;
end;

procedure TMHMainForm.ToolCMOSWriteItemClick(Sender: TObject);
var
  Frm: THexChForm;
  R: Integer;
begin
  Frm := GetCurDoc;
  if Frm = nil then Exit;
  if Options.AskWriteCMOS then
  begin
    R := MessageBox(Handle, '将数据写入CMOS有可能导致CMOS数据损坏,继续吗?', '警告', 36+256);
    if R = ID_NO then Exit;
  end;
  Frm.SaveToCMOS;
end;

procedure TMHMainForm.ToolCMOSBackupItemClick(Sender: TObject);
begin
  ShowBackupCMOSForm;
end;

procedure TMHMainForm.ToolCMOSRestoreItemClick(Sender: TObject);
begin
  ShowRestoreCMOSForm;
end;

procedure TMHMainForm.ToolBkmkMgrItemClick(Sender: TObject);
begin
  ShowBkmkMgrForm;
end;

procedure TMHMainForm.ToolRadixConvItemClick(Sender: TObject);
begin
  ShowRadixConvForm;
end;

procedure TMHMainForm.ToolDecHexTableItemClick(Sender: TObject);
begin
  ShowDecHexForm;
end;

procedure TMHMainForm.ToolASCIITableItemClick(Sender: TObject);
begin
  ShowAsciiForm;
end;

procedure TMHMainForm.ToolCalItemClick(Sender: TObject);
begin
  WinExec('Calc.exe', SW_SHOW);
end;

procedure TMHMainForm.TimerTimer(Sender: TObject);
var
  Frm: THexChForm;
begin
  ShowKeyState;
  Frm := GetCurDoc;
  if Frm <> nil then
  begin
    Frm.FlashCursor;
  end else
  begin
    DataInspForm.SetData(nil, 0);
  end;
end;

procedure TMHMainForm.FileMRU1ItemClick(Sender: TObject);
var
  FileName: string;
  MenuItem: TMenuItem;
begin
  MenuItem := Sender as TMenuItem;
  FileName := MRUManager.Items[MenuItem.Tag - 1];
  OpenFile(FileName);
end;

procedure TMHMainForm.STPopupShowMainWinItemClick(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_SHOW);
  SysTray.Active := False;
  Application.Restore;
end;

procedure TMHMainForm.SysTrayIconMouseDown(Sender: TObject;
  Button: TMouseButton; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    STPopupShowMainWinItemClick(nil);
  end;
end;

procedure TMHMainForm.CutToolButtonClick(Sender: TObject);
begin
  if GetCurDoc <> nil then
    GetCurDoc.DoCut;
end;

procedure TMHMainForm.CopyToolButtonClick(Sender: TObject);
begin
  if GetCurDoc <> nil then
    GetCurDoc.DoCopy;
end;

procedure TMHMainForm.PasteToolButtonClick(Sender: TObject);
begin
  if GetCurDoc <> nil then
    GetCurDoc.DoPaste;
end;

procedure TMHMainForm.UndoToolButtonClick(Sender: TObject);
begin
  if GetCurDoc <> nil then
    GetCurDoc.Undo;
end;

procedure TMHMainForm.RedoToolButtonClick(Sender: TObject);
begin
  if GetCurDoc <> nil then
    GetCurDoc.Redo;
end;

procedure TMHMainForm.SearchToolButtonClick(Sender: TObject);
begin
  if GetCurDoc <> nil then
    GetCurDoc.DoSearch;
end;

end.

⌨️ 快捷键说明

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