2016-05-16 50 views
-1

我在窗體上有一個組件(a TPushEvents)。我已經明確地從其中一個屬性中刪除了值(Provider)。如何獲得組件的屬性以保持零?

我保存並將其檢入源代碼管理。我可以看到該屬性確實從fmx文件中刪除。這裏是進入樣子後,我空白的財產並保存表單:

object PushEvents1: TPushEvents 
    Left = 128 
    Top = 200 
end 

如果我關閉該項目並重新打開它,該場所被重新添加和重置爲它的默認值(它指出在第一個T*Provider組件,它可以在窗體上找到 - 在我的情況下,一個TKinveyProvider)。這使我在釋放模式下建造時會產生各種悲傷。這裏是進入樣子後,我重新打開該項目保存表單:

object PushEvents1: TPushEvents 
    Provider = KinveyProvider1 
    Left = 128 
    Top = 200 
end 

事實上保存它,我可以看到,財產已經回到了FMX文件。

設置在FormCreate的財產,以nil也是白搭,因爲TPushEvents開始訪問FormCreateTKinveyProvider被觸發。

當我重新加載項目時,我該如何保留TPushEvents.Provider屬性nil

在我理想的世界中,我可以輸入一個常數,它可以讓它保留fmx文件中的屬性,但仍然表明它沒有指向任何東西。

+0

創建「過程已加載;覆蓋;」並嘗試在調用繼承之後將其設置爲Loaded。 – FredS

+1

來自FMX或您自己的/第三方的此物品?如果可能的話,這將是修復此組件的最佳解決方案。我對組件做了同樣的錯誤:在構造函數中設置了一些初始值,希望實際值能夠從文件中「加載」,但事實證明,只有顯式存儲在文件中的屬性纔會改變,所以構造函數必須將值設置爲默認值,'Delphi in a Nutshell'一書中描述了一個很好的方法,可以自動將所有屬性設置爲默認值。 –

+0

@YuriyAfanasenkov簡短的故事是一個TPushEvent對象。所以它是從Embarcadero內置的,所以需要一些spelunking。我最大的希望是有一種方法可以在設計器視圖中硬編碼Nil作爲對象的參數。 – BIBD

回答

0

我發現一個不太理想的解決方案。

如果我將TPushEvents組件的整個創建移動到FormCreate,那麼當我重新打開我的項目時,我不必擔心RAD Studio「固定」組件。

如果我遵循產品的表面理念(在表單上放置組件,而不是在代碼中創建它們),那麼它會不太理想,那麼這肯定會退出該模型。