dfmcheck 检查单元中未声明的 FastReport 的子组件

Dfmcheck checks subcomponents of FastReport that are not declared in unit

我正在开发一个使用 FastReport 设计进行报告的 XE3 项目。

当我尝试 运行 DFMCheck 时,生成的单元会尝试访问报告的子组件(即 TfrxDataPage),这些子组件存在于 .DFM 中,但不是在表单的类定义中创建的。如果我尝试将字段添加到 .PAS 文件中的表单声明,Delhi 告诉我它没有相应的组件并要求我删除声明。

所以 .dfm 看起来像这样:

  object frxReport1: TfrxReport
  ...
    object Data: TfrxDataPage
      Height = 1000.000000000000000000
      Width = 1000.000000000000000000
    end

.pas 看起来像这样:

TMyForm = class(TForm)
  ...
  frxReport1: TfrxReport;
  Data: TfrxDataPage;  // Added manually, but gets deleted when saving the form
  ...

DFMCheck 生成的 DfmCheck_Unit 包含以下内容:

  with TMyForm(nil) do { uForm2.pas }
  begin
    frxReport1.ClassName; { frxReport1: TfrxReport; }
    Data.ClassName; { Data: TfrxDataPage; }
    ..

Data.Classname 语句生成编译错误,因为未声明数据组件。

如何让 DFMCheck 接受这个并且不再为 TfrxReport 的子组件生成测试?

DFMCheck 不知道组件 类。它只查看 DFM 并看到 object 意味着 Data: TfrxDataPage 组件是 Form/Frame/Datamodule 的一部分。它无法知道FastReport创建了一个没有可访问字段的子组件。

解决此问题的唯一方法是将这些组件列入黑名单,DFMCheck 还不支持(目前?)。