即使没有任何改变,Delphi XE2也会更改DFM

Lie*_*zje 4 svn delphi dfm

可能重复:
是否有一个Delphi选项来"锁定"表单的设计(布局)以防意外更改?

我们最近更改了从StarTeam更改为SVN,但我们的DFM文件出现问题.看起来Delphi更改了DFM文件,即使我们实际上没有更改表单.

例如:我打开现有文件,更改活动标签页,保存文件,将标签页更改回原始状态,然后再次保存.当我对这两个文件进行区分时,PixelsPerInch,TextHeight,Top和许多其他值都发生了变化?我的代码的一小部分示例:

   PixelsPerInch = 96
      TextHeight = 13
      inherited PageControl1: TPageControl
        Top = 105
        Height = 629
        Margins.Left = 5
        Margins.Top = 5
        Margins.Right = 5
        Margins.Bottom = 5
        HotTrack = True
        inherited TabSheet1: TTabSheet
          Margins.Left = 5
          Margins.Top = 5
          Margins.Right = 5
          Margins.Bottom = 5
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法让Delphi只在表单发生变化时才更改DFM?现在,当我们一直在SVN中更新时,我们会发生冲突.

Dav*_*nan 7

这只是Delphi的表单流机制如何工作的结果.

在Delphi设计器中打开表单时,.dfm文件用于在表单上创建每个组件的实例.在您的情况下,表单设计器将实例化.dfm文件中的每个对象.将读入.dfm文件中的每个属性.

然后,如果您在设计器中执行任何操作,将表单标记为已修改,例如更改活动标签页,则设计器将在您保存时重新创建.dfm文件.它通过要求内存组件自行保存来重新创建.dfm文件.此保存过程不会考虑磁盘上的.dfm文件.每个组件只保存它们在那个时间点的属性.

因此,总而言之,您无法改变德尔福的行为.您可以做的最好的事情是解决它,以尽量减少影响.

如果您的表单有,Scaled=True那么您应确保所有开发人员计算机使用相同的字体缩放.否则,当开发人员A保存一个字体缩放时,该.dfm文件将与开发人员B以不同字体缩放保存的文件完全不同.所有职位都将被更改.听起来好像你有一些开发人员使用120dpi字体缩放.那将会让你无尽悲伤.

如果对表单文件进行良性编辑会导致较大的更改,请提交这些更改.一旦你以相同的方式配置了每台开发者机器,你就会发现事情已经解决了.那些良性编辑不应再导致.dfm文件更改.

这只是Delphi视觉设计的职业危害之一.无论何时提交,都需要对.dfm文件进行大量的关注和关注.我经常发现自己从Tortoise提交对话框恢复对.dfm文件的更改.我还经常选择在文本编辑器中修改.dfm文件,而不是使用表单设计器!

  • 最后一段是如此真实.在提交更改之前,您应该始终注意dfm. (3认同)