有没有一种正确的方法可以使Delphi Designer查看表单的已发布属性并同时使用继承的dfm代码?

问题描述

我有自己的表格层次结构:TFORM->TKCustomForm->TKObjectForm->TFSObjectForm. TForm –标准的Delphi类。 TKCustomForm –实现我的应用程序表单的基本逻辑(调试,日志记录,调整大小等)。 DFM不变。 DFM代码

object KCustomForm: TKCustomForm
  Caption = 'KCustomForm'
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  ...
end

TKObjectForm-实现对话框形式的应用程序的基本逻辑。添加自定义发布的属性和事件。还添加视觉组件(带有“确定”,“取消”,“应用”按钮的底部面板)。 DFM代码如下:

inherited KObjectForm: TKObjectForm
  Caption = 'KObjectForm'
  ...
  object pnlBottom: TKMovePanel    
    ...
    object pnlButtons: TKMovePanel
       object btnOK: TKButton
       ..
       end
      object btnCancel: TKButton
      ..
      end
      object btnApply: TKButton
      ..
      end
    end
  end
  object DataSource: TDataSource
    Left = 184
    Top = 152
  end
end 

TFSObjectForm –实现对FastScript Engine的支持。没有dfm更改。 DFM看起来像这样:

inherited FSObjectForm: TFSObjectForm
  PixelsPerInch = 96
  TextHeight = 13
end

所有这些文件都在软件包中。除了我看不到其他属性和事件外,所有工作均按预期进行。我必须每次都在源代码中手动设置它。

我发现可以使用RegisterCustomModule方法解决此问题。如果用于显示一种表单类型或框架类型的已发布属性,则效果很好,但是对于整个层次结构,它的工作方式却非常奇怪。

在包的Register方法中,我添加RegisterNoIcon([TKCustomForm,TKObjectForm,TFSObjectForm,TKIndepForm,TFSIndepForm]);的所有类型的注册

当我使用RegisterCustomModule(TKCustomForm,TCustomModule);时-将KObjectForm中的DFM代码inherited KObjectForm更改为object KObjectForm,没有任何反应。

当我使用RegisterCustomModule(TKObjectForm,TCustomModule);时-它将FSObjectForm中的DFM代码inherited FSObjectForm更改为object FSObjectForm,向我展示了设计器中的其他属性,但从表单中删除了其他面板。

当我使用RegisterCustomModule(TFSObjectForm,TCustomModule);时-没有任何反应。 DFM代码在整个层次结构中相同,带有按钮的底部面板出现,但是TFSObjectForm和所有访问器中仍然缺少其他属性。我什至尝试从TKObjectForm中的TFSObjectForm 重新发布属性,但是它不起作用。

如何在dfm中添加组件并使发布的属性在同一父类中可见?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)