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

📄 amain.pas

📁 MTK based mobile ROM firmware editor
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    VTROMResVTROMResSize: TIntegerField;
    VTROMResVTROMResProps: TStringField;
    VTROMResVTROMResPreview: TBlobField;
    VTROMResVTROMResBINNew: TBlobField;
    SDBINRes: TSaveDialog;
    cxGroupBox13: TcxGroupBox;
    ImgView: TcxImage;
    dxBarDockControl8: TdxBarDockControl;
    ALRes: TActionList;
    AcResSaveToFile: TAction;
    AcResLoadFromFile: TAction;
    AcResCopyToClipb: TAction;
    AcResPasteFromClip: TAction;
    AcResRestore: TAction;
    AcResApply: TAction;
    AcResPatch: TAction;
    BarManBar5: TdxBar;
    BarManBar6: TdxBar;
    dxBarButton31: TdxBarButton;
    dxBarButton32: TdxBarButton;
    dxBarButton33: TdxBarButton;
    dxBarButton37: TdxBarButton;
    dxBarButton38: TdxBarButton;
    dxBarButton39: TdxBarButton;
    dxBarButton40: TdxBarButton;
    GIFAnimator: TJvGIFAnimator;
    AcResZoom: TAction;
    dxBarButton22: TdxBarButton;
    GBAudio: TcxGroupBox;
    MediaPlayer: TMediaPlayer;
    VTROMResVTROMResCRC32: TIntegerField;
    cxPageControl4: TcxPageControl;
    cxTabSheet10: TcxTabSheet;
    cxTabSheet11: TcxTabSheet;
    dxBarDockControl7: TdxBarDockControl;
    TLROMRes: TcxDBTreeList;
    TLROMResVTROMResResID: TcxDBTreeListColumn;
    TLROMResVTROMResType: TcxDBTreeListColumn;
    TLROMResVTROMResBIN: TcxDBTreeListColumn;
    TLROMResVTROMResPreview: TcxDBTreeListColumn;
    TLROMResVTROMResProps: TcxDBTreeListColumn;
    TLROMResVTROMResSize: TcxDBTreeListColumn;
    TLROMResVTROMResMaxSize: TcxDBTreeListColumn;
    TLROMResVTROMResOffset: TcxDBTreeListColumn;
    TLROMResVTROMResCRC32: TcxDBTreeListColumn;
    procedure AcNotInTreeExecute(Sender: TObject);
    procedure AcFilterExecute(Sender: TObject);
    procedure EdOriginSearchChange(Sender: TObject);
    procedure AcSearchByRuExecute(Sender: TObject);
    procedure AcSearchByEngExecute(Sender: TObject);
    procedure AcSearchByNoExecute(Sender: TObject);
    procedure EdOriginSearchCurChange(Sender: TObject);
    procedure ScrollTimerTimer(Sender: TObject);
    procedure TLStructureDragOver(Sender, Source: TObject; X, Y: integer;
      State: TDragState; var Accept: boolean);
    procedure TLStructureCustomDrawCell(Sender: TObject; ACanvas: TcxCanvas;
      AViewInfo: TcxTreeListEditCellViewInfo; var ADone: boolean);
    procedure TLStructureMoveTo(Sender: TObject; AttachNode: TcxTreeListNode;
      AttachMode: TcxTreeListNodeAttachMode; Nodes: TList;
      var IsCopy, Done: boolean);
    procedure TLStructureDragDrop(Sender, Source: TObject; X, Y: integer);
    procedure AcSyncModeListExecute(Sender: TObject);
    procedure AcSyncModeStructExecute(Sender: TObject);
    procedure TLOriginalMoveTo(Sender: TObject; AttachNode: TcxTreeListNode;
      AttachMode: TcxTreeListNodeAttachMode; Nodes: TList;
      var IsCopy, Done: boolean);
    procedure TLStructureDblClick(Sender: TObject);
    procedure AcDesyncExecute(Sender: TObject);
    procedure TLOriginalFocusedColumnChanged(Sender: TObject;
      APrevFocusedColumn, AFocusedColumn: TcxTreeListColumn);
    procedure TLOriginalDblClick(Sender: TObject);
    procedure TLOriginalChange(Sender: TObject);
    procedure AcEngToRusExecute(Sender: TObject);
    procedure OQOriginalAfterScroll(DataSet: TDataSet);
    procedure OQOriginalCalcFields(DataSet: TDataSet);
    procedure OQOriginalFilterRecord(DataSet: TDataSet; var Accept: boolean);
    procedure OQStructureAfterScroll(DataSet: TDataSet);
    procedure OQStructureCalcFields(DataSet: TDataSet);
    procedure AcExportToExcellExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AcRefreshAllExecute(Sender: TObject);
    procedure TLStructureChange(Sender: TObject);
    procedure AcSoundexExecute(Sender: TObject);
    procedure EdFontPathPropertiesButtonClick(Sender: TObject;
      AButtonIndex: integer);
    procedure VTFontsCalcFields(DataSet: TDataSet);
    procedure ACFApplyFontExecute(Sender: TObject);
    procedure AcImportVocExecute(Sender: TObject);
    procedure AcDeleteVocExecute(Sender: TObject);
    procedure AcRefreshVocExecute(Sender: TObject);
    procedure SQLTimerTimer(Sender: TObject);
    procedure cxDBTreeList1SelectionChanged(Sender: TObject);
    procedure AcTranslateExecute(Sender: TObject);
    procedure AcEditModelExecute(Sender: TObject);
    procedure FontThumbViewGetTitle(Sender: TObject; FileName: string;
      var ThumbnailTitle: string; var ThumbnailFont: TFont;
      var ThumbnailColor: TColor);
    procedure FontThumbViewChange(Sender: TObject);
    procedure ACFRestoreFontExecute(Sender: TObject);
    procedure cxDBImage1PropertiesChange(Sender: TObject);
    procedure EDFontPropertiesInitPopup(Sender: TObject);
    procedure EDFontPropertiesChange(Sender: TObject);
    procedure EDFontPropertiesFontPreviewButtonClick(Sender: TObject;
      ButtonType: TcxFontButtonType);
    procedure CharNewMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: integer);
    procedure CharNewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
    procedure ACFSizeUpExecute(Sender: TObject);
    procedure ACFSizeDownExecute(Sender: TObject);
    procedure ACFTopExecute(Sender: TObject);
    procedure ACFBottomExecute(Sender: TObject);
    procedure ACFLeftExecute(Sender: TObject);
    procedure ACFRightExecute(Sender: TObject);
    procedure ACFWideUpExecute(Sender: TObject);
    procedure AcWideDownExecute(Sender: TObject);
    procedure EdFirmwarePathPropertiesButtonClick(Sender: TObject;
      AButtonIndex: integer);
    procedure cxPageControl3Change(Sender: TObject);
    procedure VTROMResCalcFields(DataSet: TDataSet);
    procedure TLROMResCustomDrawCell(Sender: TObject; ACanvas: TcxCanvas;
      AViewInfo: TcxTreeListEditCellViewInfo; var ADone: Boolean);
    procedure AcResSaveToFileExecute(Sender: TObject);
    procedure AcResLoadFromFileExecute(Sender: TObject);
    procedure AcResCopyToClipbExecute(Sender: TObject);
    procedure AcResPasteFromClipExecute(Sender: TObject);
    procedure AcResRestoreExecute(Sender: TObject);
    procedure AcResApplyExecute(Sender: TObject);
    procedure AcResPatchExecute(Sender: TObject);
    procedure TLROMResSelectionChanged(Sender: TObject);
    procedure AcResZoomExecute(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Refilter;
    procedure SerchBy(F: TField; Str: string);
    procedure SearchByNo(Str: string);
    procedure DoTimerScroll;
    procedure SafeRefresh(DS: TDataSet; Key: string = '');
    procedure LoadFonts(Path: string);
    procedure SaveFonts(Path: string);
    procedure FillCharFromFont;
    procedure RestoreCharFromOriginal;
    procedure FillCharsFromFont;
    procedure RestoreCharsFromOriginal;
    procedure FillFontChar(Character: word; var BMP: TBitmap);
    procedure DrawGrid(Img: TcxDBImage);
    function GetCoord(x, y: integer; Img: TcxDBImage): TPoint;
    procedure DrawToChar(x, y: integer; Img: TcxDBImage);
  end;

procedure StartWait;
procedure StopWait;
function HexToInt(s: string): word;

var
  fMain: TfMain;

implementation

uses aSoundex, aROM;

{$R *.dfm}
//-----------------------
function HexToInt(s: string): word;
var
  b: byte;
  c: char;
begin
  Result := 0;
  s := UpperCase(s);
  for b := 1 to Length(s) do
  begin
    Result := Result * 16;
    c := s[b];
    case c of
      '0'..'9': Inc(Result, Ord(c) - Ord('0'));
      'A'..'F': Inc(Result, Ord(c) - Ord('A') + 10);
      else
        raise EConvertError.Create('No Hex-Number');
    end;
  end;
end;

//-----------------------
procedure TfMain.FillFontChar(Character: word; var BMP: TBitmap);
var
  ch: widechar;
  TempBMP: TBitmap;
begin
  if BMP = nil then
    exit;
  if Character = 0 then
    Character := HexToInt(Self.VTFontsCharID.AsString);
  BMP.Canvas.Font.Name := FMain.EDFont.FontName;
  BMP.Canvas.Font.Size := FMain.EdFontSize.Value;
  BMP.Canvas.Font.Style := FMain.EDFont.Properties.FontPreview.FontStyle;
  ch := widechar(Character);
  if cbNewFontSize.Checked then
    BMP.Height := BMP.Canvas.TextHeight(ch);
  //cUnicodeChar.w
  BMP.Width := BMP.Canvas.TextWidth(ch);
  //  Rect.Top := 0;
  //  Rect.Left := 0;
  //  Rect.Right := BMP.Width;
  //  Rect.Bottom := BMP.Height;
  //  BMP.Canvas.Brush.Color := clWhite;
  BMP.Canvas.FillRect(BMP.Canvas.ClipRect);
  // BMP.Canvas.Brush.Color:=clBlack;
  // ShowMEssage(ch);
  BMP.Canvas.TextOut(0 + EdDW.Value, 0 - EdDH.Value, ch);
  TempBMP := TBitmap.Create;
  TempBMP.Assign(BMP);
  try
    TempBMP.Width := Round(BMP.Canvas.TextWidth(ch) * (EdWPerc.Value / 100));
    SetStretchBltMode(BMP.Canvas.Handle, BLACKONWHITE);
    StretchBlt(TempBMP.Canvas.Handle, 0, 0, TempBMP.Width, TempBMP.Height,
      BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height, SRCCopy);
    BMP.Assign(TempBMP);
  finally
    TempBMP.Free;
  end;
end;
//--------------------------
procedure StartWait;
begin
  if not FMain.PBMain.Properties.Marquee then
    FMain.PBMain.Properties.Marquee := True;
  FMain.SQLTimer.Enabled := False;
  FMain.SQLTimer.Enabled := True;
  Application.ProcessMessages;
end;

procedure StopWait;
begin
  FMain.PBMain.Properties.Marquee := False;
  FMain.SQLTimer.Enabled := False;
  Application.ProcessMessages;
end;

procedure TfMain.AcDeleteVocExecute(Sender: TObject);
begin
  if Application.MessageBox(
    '蔓 信浪芡

⌨️ 快捷键说明

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