停止 C++Builder XE 删除/编辑 .dfm 文件中的 UI 组件

Posted

技术标签:

【中文标题】停止 C++Builder XE 删除/编辑 .dfm 文件中的 UI 组件【英文标题】:Stop C++Builder XE from removing/editing UI components in the .dfm files 【发布时间】:2011-08-05 06:57:31 【问题描述】:

如何阻止 C++Builder XE 自动编辑 .dfm 文件?

我目前正在将一个相当大的代码库从 BCB5 移植到 XE。旧代码中使用了很多外部组件,但尚未为新环境安装(因为我需要找到工作替代品或自己移植它们)。现在,Builder 删除/更改了我的 dfm 文件中这些 UI 组件的定义。如果 IDE 没有找到组件的实现,则将其完全删除。对于已知组件,大小会多次更改一个很小的值。我该如何改变这种恼人的行为?

【问题讨论】:

你试过在 BCB5 中锁定 dfm 吗? IIRC,当您右键单击表单设计器时,这是一个选项。 【参考方案1】:

它将同时编辑 DFM 和头文件以删除组件。

共有三个选项:

当 IDE 打开一个组件不存在的表单时,它会询问您要做什么。您可以点击“全部忽略”,它不会删除那些组件引用。

如果您使用源代码管理,您应该能够恢复这些更改。即,让 IDE 为所欲为,然后恢复或不提交这些更改。

最好的方法是实际安装这些组件。如果您在项目中打开表单但组件不存在,您要做什么?您将无法编译它们。如果你需要用不同的组件替换组件,IDE 删除旧组件有什么问题?

您可能应该先尝试安装相同组件的较新版本,然后再自行升级项目及其文件。然后升级项目并根据具体情况删除对不存在的组件的引用,并用不同的组件替换它们。

“对于已知组件,大小会多次改变一个很小的值。”

从技术上讲,这是一个不同的问题;)但如果它很小,请忽略它。像ExplicitLeftExplicitTop 这样的一些属性几乎肯定会发生变化,我认为这是由于不同的窗口标题栏和边缘宽度(通常是在使用 XP 保存表单时使用的 Vista 中看到的。我想想。我从来没有完全弄清楚为什么这些会不断变化,但它似乎不会影响任何事情。)确保您使用的系统与上次保存表单的系统具有相同的 DPI 设置(这是显示属性中的字体大小设置。)

【讨论】:

感谢您的回答。直到现在,我使用了“全部忽略”并恢复方法。问题是我不希望 IDE 一次删除所有这些东西,而不给我一步一步解决它的可能性。我只是不喜欢 IDE 自动执行某些操作,我什至没有选项来切换这种行为。【参考方案2】:

我发现 dfm 文件只有在打开相应的 cpp 或 h 文件时才会由 IDE 更改。这样,我可以编译源代码,一旦发现未知的组件/属性,编译器就会抛出错误,我可以解决它们。

【讨论】:

以上是关于停止 C++Builder XE 删除/编辑 .dfm 文件中的 UI 组件的主要内容,如果未能解决你的问题,请参考以下文章

Delphi XE8,C++ Builder XE8,RAD Studio XE8 官方 ISO 文件下载,附激活工具

C++ Builder XE:找出包含特定 h 文件的位置

在 Rad Studio XE 6 中找不到 C++ Builder 项目

C++ Builder XE 无法从 BCB6 成功转换项目

C++ Builder 2009 同步

在 XE5 中,每次我创建一个项目时,它都会重新编译所有内容