2016-06-22 44 views
1

在Delphi 7中,我創建了一個無線電組組件,其中的項目是從數據庫表中獲取的。使用的表格表示爲組件屬性之一。 populate()過程在運行時調用時成功填充組。不過,我想在創建時填充組,當我嘗試引用tablename屬性(通過getTableName()),即使在構造方法結束時,也是空的。我怎樣才能做到這一點?私有變量fTablename在什麼時候被填充?在delphi中創建數據庫時填充無線電組合框

+0

想必您是要問知道資產何時流動。你可以覆蓋Loaded。如果屬性是在運行時設置的呢? –

回答

2

當我嘗試引用tablename屬性(通過getTableName())甚至在結構函數方法結束時,它是空的。

這是因爲在施工過程中,設計時屬性值尚未從DFM流入組件。這發生在施工結束後。

我該怎麼做?私有變量fTablename在什麼時候被填充?

當其屬性被分配時,例如在DFM流式傳輸過程中。

如果您想在運行時對設計時值起作用,您需要覆蓋虛擬方法,該方法在DFM流入組件後被調用。

此外,任何使用現有屬性值執行實時更新的屬性設置器應在執行這些更新之前首先檢查ComponentState屬性的csLoadingcsReading標誌。如果設置了標誌,則延遲更新直到調用Loaded()

+0

我後來發現在嘗試通過afterconstruction方法訪問時他們甚至沒有填充。不知道爲什麼我得到了-1 –

+0

@TonyWolff的權利,因爲在**構造完成之後,DFM會流入組件**。 –