我在 Delphi 7 中遇到框架和继承问题。
假设我使用 visible=false
定义一个框架(在设计时)。
现在,我将此框架嵌入到某个表单中,并在表单内的框架的嵌入实例上设置 visible=true
(也在设计时)。
现在假设我想根据设计时设置的可见属性来初始化嵌入框架。问题是简单地覆盖框架的构造函数不起作用,因为在构造函数内部我总是得到 visible=false
(我猜是因为 DFM 属性尚未被读取)。我也不想将初始化代码放在Form单元中,因为这个逻辑只属于Frame。
处理此类案件的最佳经验法则是什么?
澄清
Frame.Visible
只是一个示例。该问题与在设计时设置的框架或其内部组件的所有其他属性相关。例如,假设我们正在讨论框架内 TEdit 的颜色。
最佳答案
您不能在构造函数中编写属性敏感代码,因为正如您所指出的,在构造函数运行时不一定会读取 DFM 属性。相反,重写框架类的 Loaded
方法并将代码放在那里。从 DFM 加载属性后调用它。
请注意,Visible
不适用于该技术,但其他属性可以。
关于delphi - TFrame 子级需要 OnCreate 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13788418/