【问题标题】:Delphi: DBGrid Options are not saved?Delphi:DBGrid 选项没有保存?
【发布时间】:2011-11-30 14:02:11
【问题描述】:

接下来是我的问题:

我有自己的基于 TDBGrid 的 DBGrid。

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

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

好的,我认为没关系,因为我将它设置为 True,创建时将其设置为 True,但在加载时 Delphi 会将其更改为好的值(False)。

但是经验表明现在这行不通!

我不知道为什么。

我将自己的 dbgrid 放在 Form1 上。 ASS 选项已打开。 我将其设置为 false。

我启动应用程序。 现在又开始了。 当我在 LOADed 上显示 Option 的值时,我得到了 True 值。 所以没有根据需要加载值。

我不知道为什么会这样,但我认为这是基于“默认”??? 可能默认为 False,所以如果我将其设置为 False,则不会将值保存到 DFM...

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

感谢您的帮助: dd

【问题讨论】:

    标签: delphi components default option dbgrid


    【解决方案1】:

    Delphi 流系统仅在属性与默认值不同时才存储它们。这些默认值可以是隐式的(例如 0 表示整数,'' 表示字符串)并且可以通过 default 关键字显式设置。 TDbGrid.Options 也是如此([dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dgTitleHotTrack])。

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

    要满足您的需求,您不仅需要在构造函数中将选项设置为 true,还需要指定更改后的 default 值,以使流式传输系统知道此更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多