我在 Delphi 2010 中使用 TFIBDataset 组件。
每当我打开一个保存 TFIBDataset 组件的表单并关闭相同的表单而不进行任何更改时,如果尝试将该 .dfm 文件与代码存储库中的相同文件进行比较,我总是会找到以下所有代码所有相应 TFIBDataset 组件中的“TFIBStringField”字段
Transliterate = False
我想避免此代码出现在 .dfm 文件中。我该如何阻止这种情况,使代码比较变得更容易?
最诚挚的问候。
维沙尔
我在 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
.