我正在開發一個Delphi框架,並且需要在開始時將一個業務對象列表加載到一個網格控件中。 Delphi幀沒有OnCreate事件,那麼複製它的最好方法是什麼?我是否應該重寫像About上建議的構造函數?我應該只是公開一個loadData()
過程,並讓父容器在準備創建時調用它?Delphi框架的OnCreate事件
我想確保所有子控件都已加載並準備好,然後再填充數據,但我不熟悉Delphi組件創建層次結構。
我正在開發一個Delphi框架,並且需要在開始時將一個業務對象列表加載到一個網格控件中。 Delphi幀沒有OnCreate事件,那麼複製它的最好方法是什麼?我是否應該重寫像About上建議的構造函數?我應該只是公開一個loadData()
過程,並讓父容器在準備創建時調用它?Delphi框架的OnCreate事件
我想確保所有子控件都已加載並準備好,然後再填充數據,但我不熟悉Delphi組件創建層次結構。
我不會將數據填充到創建。你可以合理地創建一個框架並保留它,但改變其後顯示的內容。如果您在onCreate
中填寫,則必須自由並重新創建才能獲取最新數據。所以有一個LoadData()
是一個更好的方法。
根據應用程序的複雜程度以及您擁有的窗體和框架的數量,將所有框架從一個通用基本框架中繼承可能會很方便。然後,您可以在基礎中引入一個虛擬的LoadData
方法並覆蓋幀子類。
另外,你也可以設計一個接口,並有框架實現它。如果做得適當,可以讓你對待形式,框架甚至面板等,統一。
很難給你一個更具體的建議,因爲它取決於GUI和應用程序的複雜性。一般來說,儘可能少地使用邏輯/代碼形式/框架總是很好的。因此引入某種處理註冊和顯示錶單/框架的FormManager類可以幫助將這種行爲隔離在一個位置。但是,如果它是一個小而簡單的應用程序,只需在表單中完成即可。
我通常會選擇兩種不同的方法之一:
這樣,如何獲得物體的邏輯可以放在其他地方。 (現在,這可能是你已經做了,但名稱'LoadData'使我相信你的名氣實際上是要從某種存儲庫加載數據,而不是僅僅顯示一些數據否則以前提取...)
是的,覆蓋繼承的構造函數將完成這項工作 – zz1433 2010-08-16 15:08:54