gpt4 book ai didi

Delphi XE2 改变了 DFM,尽管没有任何改变

转载 作者:行者123 更新时间:2023-12-03 15:23:36 27 4
gpt4 key购买 nike

Possible Duplicate:
Is there a Delphi option to ‘lock’ the design (layout) of a form against accidental changes?

我们最近从 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

我的问题是:有没有办法让Delphi只在表单改变时才改变DFM?现在,我们在SVN中更新时总是会出现冲突。

最佳答案

这只是 Delphi 表单流机制工作方式的结果。

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

然后,如果您在设计器中执行任何将表单标记为已修改的操作(例如更改事件选项卡),则设计器将在您保存时重新创建 .dfm 文件。它通过要求内存中的组件保存自身来重新创建 .dfm 文件。此保存过程不考虑磁盘上的 .dfm 文件是什么样子。每个组件仅保存其当时的属性。

因此,总而言之,您实际上无法改变 Delphi 的行为。您能做的最好的事情就是解决它以尽量减少影响。

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

如果对表单文件的良性编辑导致较大的更改,请提交这些更改。一旦您以相同的方式配置了每台开发人员机器,您就会发现一切都安定下来了。这些良性编辑不应再导致 .dfm 文件更改。

这只是Delphi视觉设计的职业危害之一。每当您提交时,您都需要非常小心和注意您的 .dfm 文件。我经常发现自己从 Tortoise 提交对话框恢复对 .dfm 文件的更改。我还经常选择在文本编辑器中修改 .dfm 文件,而不是使用表单设计器!

关于Delphi XE2 改变了 DFM,尽管没有任何改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com