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

📄 unit1.pas

📁 16进制HEX编辑器DELPHI控件源码。
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, MPHexEditor, StdCtrls, ComCtrls, Grids;

type
  TForm1 = class(TForm)
    MPHexEditor1: TMPHexEditor;
    Panel1: TPanel;
    rbHex: TRadioButton;
    rbDec: TRadioButton;
    Label1: TLabel;
    edOffset: TEdit;
    Label2: TLabel;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure MPHexEditor1GetOffsetText(Sender: TObject;
      const Number: Int64; var OffsetText: String);
    procedure edOffsetChange(Sender: TObject);
    procedure rbHexClick(Sender: TObject);
    procedure MPHexEditor1SelectionChanged(Sender: TObject);
    procedure rbDecClick(Sender: TObject);
  private
    { Private declarations }
    FOffsetShift: Int64;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // make sure that MYGRID is not defined in mphexeditor.pas
  Assert(MPHexEditor1 is TCustomGrid);

  MPHexEditor1.LoadFromFile(ParamStr(0));
  FOffsetShift := 0;
end;

procedure TForm1.MPHexEditor1GetOffsetText(Sender: TObject;
  const Number: Int64; var OffsetText: String);
begin
  // add the custom FOffsetShift value to the actual data position (given in Number)
  with MPHexEditor1 do
    OffsetText := GetOffsetString(Number + FOffsetShift);
end;

procedure TForm1.edOffsetChange(Sender: TObject);
var
  c: integer;
  i64: Int64;
begin
  // calculate new offset shift
  Val('$'+edOffset.Text, i64, c);
  if c = 0 then
  begin
    // valid input
    edOffset.Color := clWindow;
    // change offset shift
    FOffsetShift := i64;
    // draw editor
    MPHexEditor1.Repaint;
    // draw status bar
    MPHexEditor1SelectionChanged(MPHexEditor1);
  end
  else
    // show error
    edOffset.Color := clRed;
end;

procedure TForm1.rbHexClick(Sender: TObject);
begin
  MPHexEditor1.OffsetFormat := MPHOffsetHex;
  MPHexEditor1SelectionChanged(MPHexEditor1);
end;

procedure TForm1.MPHexEditor1SelectionChanged(Sender: TObject);
begin
  StatusBar1.SimpleText := MPHexEditor1.GetOffsetString(MPHexEditor1.GetCursorPos)
end;

procedure TForm1.rbDecClick(Sender: TObject);
begin
  MPHexEditor1.OffsetFormat := MPHOffsetDec;
  MPHexEditor1SelectionChanged(MPHexEditor1);
end;

end.

⌨️ 快捷键说明

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