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

时间:2016-02-15 08:47:00

标签: delphi delphi-xe3 fastreport

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

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

所以.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的子组件生成测试文件?

1 个答案:

答案 0 :(得分:2)

DFMCheck不知道组件类。它只查看DFM并看object什么意味着Data: TfrxDataPage组件是表单/框架/数据模块的一部分。它无法知道FastReport创建了一个没有可访问字段的子组件。

解决这个问题的唯一方法就是黑名单那些组件,DFMCheck不支持什么(还有?)。