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