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