2

我想知道访问子组件控件属性的标准是什么。

例如,我有我的主窗体,它创建了一个带有标签的子窗口。使用 Delphi 可以只执行 ChildForm.Label.Caption := 'text',但是由于某些未知原因,这对我来说感觉不对。设置文本的另一种方法是为 ChildForm 设置一个属性,该属性在设置时调用更新标签标题的方法。

有什么理由为什么我应该以一种或另一种方式做这件事吗?

4

1 回答 1

2

想到了四种可能性:

  • a:按照您的建议,直接访问子表单的组件和它们的属性

    ChildForm.Label.Caption := 'text',
    

:快速简便。减号:您的子窗体的“内部”不必要地暴露于外部世界,因此您的调用代码可能会变得更加脆弱。

  • b:通过子窗体的新发布属性访问

    ChildForm.LabelCaption := 'text',
    

另外:如果您希望能够通过 IDE 表单设计器轻松设置属性,这很有用。更好地封装上面的“a”。减号:可能是我最不喜欢的方法,但我无法准确解释原因。属性很强大,但所有在幕后发生的事情让我有点担心

  • c: 通过子表单设置方法访问

    ChildForm.SetCaption('text')
    

:比 B 更简单,但具有相同改进的封装,并且(在我看来)感觉更干净。

  • d:对于设置,通过额外的构造函数参数访问

在许多情况下,您只是希望能够在创建表单时稍微自定义它。在这种情况下,向构造函数添加参数是最简单的方法。它使您不必担心属性的“可读”性质,并且标题在创建表单时变得固定(就外界而言),这可能会有所帮助。

FormChild := TChildForm.Create(nil, 'test');

加:省去额外属性或方法的麻烦。减号:并非在所有情况下都适用。

于 2012-08-09T22:24:40.740 回答