我想知道访问子组件控件属性的标准是什么。
例如,我有我的主窗体,它创建了一个带有标签的子窗口。使用 Delphi 可以只执行 ChildForm.Label.Caption := 'text',但是由于某些未知原因,这对我来说感觉不对。设置文本的另一种方法是为 ChildForm 设置一个属性,该属性在设置时调用更新标签标题的方法。
有什么理由为什么我应该以一种或另一种方式做这件事吗?
想到了四种可能性:
a:按照您的建议,直接访问子表单的组件和它们的属性
ChildForm.Label.Caption := 'text',
加:快速简便。减号:您的子窗体的“内部”不必要地暴露于外部世界,因此您的调用代码可能会变得更加脆弱。
b:通过子窗体的新发布属性访问
ChildForm.LabelCaption := 'text',
另外:如果您希望能够通过 IDE 表单设计器轻松设置属性,这很有用。更好地封装上面的“a”。减号:可能是我最不喜欢的方法,但我无法准确解释原因。属性很强大,但所有在幕后发生的事情让我有点担心
c: 通过子表单设置方法访问
ChildForm.SetCaption('text')
加:比 B 更简单,但具有相同改进的封装,并且(在我看来)感觉更干净。
在许多情况下,您只是希望能够在创建表单时稍微自定义它。在这种情况下,向构造函数添加参数是最简单的方法。它使您不必担心属性的“可读”性质,并且标题在创建表单时变得固定(就外界而言),这可能会有所帮助。
FormChild := TChildForm.Create(nil, 'test');
加:省去额外属性或方法的麻烦。减号:并非在所有情况下都适用。