"Transliterate = False" 关于 TFIBDataset 组件

"Transliterate = False" About TFIBDataset Component

我在 Delphi 2010 中使用 TFIBDataset 组件。

每当我打开一个我保留了 TFIBDataset 组件的表单并在不做任何更改的情况下关闭相同的表单时,如果尝试将该 .dfm 文件与代码存储库中的相同文件进行比较,我总是会发现所有相应 TFIBDataset 组件中的所有 "TFIBStringField" 字段的以下代码

Transliterate = False

我想避免此代码出现在 .dfm 文件中。我该如何阻止它,让代码比较变得更容易?

谨致问候。

维沙尔

我想,自上次在表单设计器中打开表单后,您是否更新了 FIBPlus?

添加组件属性但未给定 default 值时会发生这种行为。默认值未保存在 dfm 文件中。

我建议您检查这些差异,不要更改您的应用程序行为,然后将它们提交到您的存储库。您以后不会再为这个 属性 烦恼了。不过,它也可能发生在其他属性上。


更新:我刚刚回复了你的问题。我查看了源代码,现在有了一个理论,为什么 Transliterate 的值被重置:

Transliterate 的默认值为 True(参见 Data.DB.pas)。因此,值 True 不会保存在 dfm 文件中。在 TFIBStringField 的构造函数中(见下文)Transliterate 设置为 False

constructor TFIBStringField.Create(AOwner: TComponent);
begin
   inherited;
   FDefaultValueEmptyString:=False;
   Transliterate:=False;
end;

由于值True没有保存在dfm中,所以不会设置,当dfm的内容赋值给TFIBStringField的实例时。