2012-08-09 49 views
2

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

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

我有什么理由要这样做吗?

+2

我想任何时候你在一行代码中有两个句点,你应该问是否要走。我?我会将该赋值封装到表单的一个方法中。是的,它适用于你,但调用代码更清洁,这总是重要的。我总是比较喜欢控制的唯一引用来自拥有它们的表单。太糟糕了,控制必须公布。 – 2012-08-09 22:14:18

回答

2

有浮现在脑海中四种可能性:

  • 一:以子窗体的组件直接访问anfd它们的属性,如 你建议

    ChildForm.Label.Caption := 'text', 
    

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

  • B:如果你希望能够轻松地通过IDE窗体设计器设置属性很有用:通过子窗体

    ChildForm.LabelCaption := 'text', 
    

新出版的属性访问。更好的封装,以上'a'。 减号:可能是我最不喜欢的方法,但我无法解释为什么。属性是强大的,但所有的在幕后发生的东西只是我担心了一下

  • C:不是简单:通过子窗体setter方法

    ChildForm.SetCaption('text') 
    

访问B,但改进了封装,并且(在我看来)有一种稍微更清洁的感觉。

  • d:有关设置,通过一个额外的构造函数参数

在许多情况下上网,你只是希望能够在创建它稍微定制的形式。在这种情况下,向构造函数中添加参数是最简单的方法。它可以让你不用担心财产的“可读”性质,而且在创建表单时标题变得固定(就外部世界而言),这可能会有所帮助。

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

加:保存打扰附加属性或方法的。 减号:不适用于所有情况。

+0

+1,当需要定义许多属性时,我通常在创建之后和Show/ShowModal之前调用'ChildForm.SetInterface(各种参数)'方法。 – 2012-08-09 23:33:23

+0

感谢列举所有这些,知道可能性会给我选择合作。 – Sentient 2012-08-10 22:35:24