我的问题是下一个:
我有自己的DBGrid,基于TDBGrid。
因为在很多地方更好地看到Selection,我认为我将它设置为Create,如果我稍后将其设置为False,则属性编辑器将保存Options属性。 因此构造函数将其创建为:
constructor TMyDBGrid.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
Options := Options + [dgAlwaysShowSelection];
end;
好吧,我认为没关系,因为我把它设置为True,创建一开始就是True,但是在Loaded上Delphi会把它改成好值(False)。
但是经验表明这现在不起作用了!
我不知道为什么。
我将自己的dbgrid放在Form1上。 ASS选项已启用。 我把它设置为假。
我开始申请。 而现在这又是重中之重。 当我在LOaded上显示Option的值时,我得到了True值。 因此,不会根据需要加载该值。
我不知道为什么会发生这种情况,但我认为这是基于“默认”??? 默认值为False,因此如果我将其设置为False,则不会将值保存到DFM ...
那么在没有这种效果的情况下保存值的可能方法是什么?
感谢您的帮助: DD
答案 0 :(得分:5)
Delphi流媒体系统仅在属性与默认值不同时才存储。这些默认值可以是隐式的(如0表示整数,''表示字符串),可以通过默认关键字明确设置。这也是TDbGrid.Options的情况([dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit,dgTitleClick,dgTitleHotTrack])。
只要您不更改集合中的任何其他选项,通过将dgAlwaysShowSelection设置为false,您将得到默认值并且不会存储在DFM中。现在,当您在Create中将dgAlwaysShowSelection设置为true并且没有任何内容存储在DFM中时,该选项将在加载后打开,即使它在存储时已关闭。
为了满足您的需求,您不仅需要在构造函数中将选项设置为true,还要指定更改的默认值,以使流系统了解此更改。