0

我在 Delphi 2010 中使用 TFIBDataset 组件。

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

Transliterate = False

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

最诚挚的问候。

维沙尔

4

1 回答 1

1

我猜,自从上次在表单设计器中打开表单以来,您已经更新了 FIBPlus?

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

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


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

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

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

由于该值True未保存在 dfm 中,因此在将 dfm 的内容分配给TFIBStringField.

于 2015-04-27T15:04:54.343 回答