Delphi:DBGrid选项没有保存?

dur*_*ara 4 delphi components default dbgrid option

我的问题是下一个:

我有自己的DBGrid,基于TDBGrid.

因为在很多地方更好地看到Selection,我认为我将它设置为Create,如果我稍后将其设置为False,属性编辑器将保存Options属性.所以构造函数创建它:

constructor TMyDBGrid.Create(aOwner: TComponent);
begin
    inherited Create(aOwner);
    Options := Options + [dgAlwaysShowSelection];
end;
Run Code Online (Sandbox Code Playgroud)

好吧,我认为没关系,因为我把它设置为True,创建一开始就是True,但是在Loaded上Delphi会将它改为好的值(False).

但经验表明,这现在不起作用!

我不知道为什么.

我把自己的dbgrid放在Form1上.ASS选项已启用.我把它设置为假.

我开始申请.而现在这又是重中之重.当我在LOaded上显示Option的值时,我得到了True值.因此,不会根据需要加载该值.

我不知道为什么会发生这种情况,但我认为这是基于"默认"??? 可能默认为False,因此如果我将其设置为False,则不将值保存到DFM中...

那么在没有这种效果的情况下保存值的可能方法是什么?

谢谢你的帮助:dd

Uwe*_*abe 5

Delphi流媒体系统仅在属性与默认值不同时才存储.这些默认值可以是隐式的(如0表示整数,''表示字符串),默认值可以由default关键字明确设置.这也是TDbGrid.Options的情况([dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit,dgTitleClick,dgTitleHotTrack]).

只要您不更改集合中的任何其他选项,通过将dgAlwaysShowSelection设置为false,您将使用默认值并且不会存储在DFM中.现在,当您在Create中将dgAlwaysShowSelection设置为true并且没有任何内容存储在DFM中时,该选项将在加载后打开,即使它在存储时已关闭.

为了满足您的需求,您不仅需要在构造函数中将选项设置为true,还要指定更改的默认值以使流系统了解此更改.