2011-10-04 52 views
4

我的問題是:德爾福:DBGrid選項不會保存?

我有我自己的DBGrid,基於TDBGrid。

因爲在許多地方更好看選擇,我想我把它放在創建,屬性編輯器保存選項財產,如果我將它設置爲假後。 所以構造函數創建爲:

constructor TMyDBGrid.Create(aOwner: TComponent); 
begin 
    inherited Create(aOwner); 
    Options := Options + [dgAlwaysShowSelection]; 
end; 

好吧,我認爲是好的,因爲我將它設置爲True,則創建是使其真正在第一,但在加載德爾福將它改成了良好的值(假)。

但表明該做的,現在沒有工作經驗!

我不知道爲什麼。

我把我自己的DBGrid在Form1上。 ASS選項已打開。 我將它設置爲false。

我啓動應用程序。 現在這是再次。 當我展示選項上裝載的價值,我得到了真正的價值。 因此,該值不會根據需要加載。

我不知道爲什麼會發生,但我認爲這是基於「默認」? 可能默認爲False,所以如果我將它設置爲False,那麼它不會將值保存到DFM中...

那麼,如何在不使用此效果的情況下保存值?

感謝您的幫助: DD

回答

5

德爾福流系統,只有當他們從他們的默認值不同的存儲性能。這些默認值可以是隱式的(例如整數爲0,字符串爲''),它們可以通過默認關鍵字明確設置。 TDbGrid.Options也是如此([dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit,dgTitleClick,dgTitleHotTrack])。

只要您不更改集合中的任何其他選項,通過將dgAlwaysShowSelection設置爲false,您將以缺省值結束並且不存儲在DFM中。現在,如果您在Create中將dgAlwaysShowSelection設置爲true,並且DFM中不存儲任何內容,則該選項在加載後將開啓,即使存儲時該選項已關閉。

要完成您的需求,您不僅必須在構造函數中將該選項設置爲true,還要指定已更改的默認值值,以使流式系統知道此更改。