2012-08-09 50 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