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

📄 formunit.pas

📁 通常情况下, 用Delphi开发的程序, dfm是作为资源嵌入可执行文件的, 这就或多或少地带来了一些安全方面的问题. 比如, 通过分析资源, 就能大致了解Form上用了哪些控件 甚至, 通过修改
💻 PAS
字号:
unit FormUnit;

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls;

type
  TDemoForm = class(TForm)
    ToDefBtn: TButton;
    PathEdit: TEdit;
    constructor Create(AOwner: TComponent); override;
    procedure FormCreate(Sender: TObject);
    procedure ToDefBtnClick(Sender: TObject);
  end;

var
  DemoForm: TDemoForm;

implementation

//{$R *.dfm}

uses InitUnit, DataUnit, ConvUnit;

constructor TDemoForm.Create(AOwner: TComponent);
begin
  GlobalNameSpace.BeginWrite;
  try
    CreateNew(AOwner);
    if (ClassType <> TForm) and not (csDesigning in ComponentState) then
    begin
      Include(FFormState, fsCreating);
      try
        if (Mz_InitInheritedComponent(Self, TForm, DemoDfm) = False) then // **
          ShowMessage('注意, 初始化界面失败, 请检查DataUnit.DfmData, :~)');
      finally
        Exclude(FFormState, fsCreating);
      end;
      if OldCreateOrder then DoCreate;
    end;
  finally
    GlobalNameSpace.EndWrite;
  end;
end;

procedure TDemoForm.FormCreate(Sender: TObject);
begin
  if (FindResource(HInstance, 'TDemoForm', RT_RCDATA) <> 0) then
    ShowMessage('注意, 发现dfm资源, 建议注释"{$R *.dfm}"后重新编译!!');

  PathEdit.Text := ExtractFilePath(Application.ExeName) + 'FormUnit.dfm';
end;

procedure TDemoForm.ToDefBtnClick(Sender: TObject);
begin
  if DfmFileToDefFile(PathEdit.Text, PathEdit.Text + '.txt') then
    ShowMessage('转换成功, :-)')
  else
    ShowMessage('转换失败, :-(');
end;

end.

⌨️ 快捷键说明

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