访问子GUI属性标准

时间:2012-08-09 22:02:03

标签: delphi oop standards

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

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

为什么我应该这样或那样做?

1 个答案:

答案 0 :(得分:2)

有四种可能性可以想到:

  • a:直接访问子表单的组件及其属性,如 你建议

    ChildForm.Label.Caption := 'text',
    

加号:快捷方便。 减号:您的子表单的“内部”不必要地暴露给外界,因此您的调用代码会变得更加脆弱。

  • b:通过子表单的新发布属性进行访问

    ChildForm.LabelCaption := 'text',
    

加号:如果您希望能够通过IDE表单设计器轻松设置属性,则非常有用。更好的封装'a'在上面。 减号:可能是我最不喜欢的方法,但我无法解释原因。属性是强大的,但所有发生在幕后的东西只是让我有点担心

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

    ChildForm.SetCaption('text')
    

加号:比B更简单,但是使用相同的改进封装,并且(在我看来)略微清洁的感觉。

  • d:对于设置,通过其他构造函数参数
  • 进行访问

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

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

加号:省去其他属性或方法的麻烦。 减:不适用于所有情况。