Delphi:DBGrid选项没有保存?

时间:2011-10-04 10:31:44

标签: delphi components default option dbgrid

我的问题是下一个:

我有自己的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

1 个答案:

答案 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,还要指定更改的默认值,以使流系统了解此更改。