停止 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 删除旧组件有什么问题?
您可能应该先尝试安装相同组件的较新版本,然后再自行升级项目及其文件。然后升级项目并根据具体情况删除对不存在的组件的引用,并用不同的组件替换它们。
“对于已知组件,大小会多次改变一个很小的值。”
从技术上讲,这是一个不同的问题;)但如果它很小,请忽略它。像ExplicitLeft
和ExplicitTop
这样的一些属性几乎肯定会发生变化,我认为这是由于不同的窗口标题栏和边缘宽度(通常是在使用 XP 保存表单时使用的 Vista 中看到的。我想想。我从来没有完全弄清楚为什么这些会不断变化,但它似乎不会影响任何事情。)确保您使用的系统与上次保存表单的系统具有相同的 DPI 设置(这是显示属性中的字体大小设置。)
【讨论】:
感谢您的回答。直到现在,我使用了“全部忽略”并恢复方法。问题是我不希望 IDE 一次删除所有这些东西,而不给我一步一步解决它的可能性。我只是不喜欢 IDE 自动执行某些操作,我什至没有选项来切换这种行为。【参考方案2】:我发现 dfm 文件只有在打开相应的 cpp 或 h 文件时才会由 IDE 更改。这样,我可以编译源代码,一旦发现未知的组件/属性,编译器就会抛出错误,我可以解决它们。
【讨论】:
以上是关于停止 C++Builder XE 删除/编辑 .dfm 文件中的 UI 组件的主要内容,如果未能解决你的问题,请参考以下文章
Delphi XE8,C++ Builder XE8,RAD Studio XE8 官方 ISO 文件下载,附激活工具
在 Rad Studio XE 6 中找不到 C++ Builder 项目