5

我认为 GExperts 中有一些东西可以做到这一点,但如果有的话我看不到。

我必须在包含大约 100 个不同表单的项目中更改每个表单中的 SCALED 属性(从默认值 TRUE 到 FALSE)。因为 SCALED 的默认值为 TRUE,它实际上并没有在 .DFM 文件中显示为一行(当以文本形式查看时),所以我无法使用 GREP(等)“获取”任何内容。

谁能建议一种以所有这些形式设置此属性的快速方法?表单是各种不同类的子类,我真的不想制作某种覆盖 SCALED 属性的中间 TForm 后代 - 部分原因是我尝试(简要地)这样做并发现将 SCALED 属性设置为 false继承创建之后对表单没有影响,并且在继承创建之前设置它会导致异常。:-)

有人有什么建议吗?如果可以的话,我真的很想避免一一打开所有这些表格,如果只是因为我一定会错过一个!

4

3 回答 3

8

我建议您将所有表格更改为来自共同祖先。然后在未来你可以改变基类,它会在任何地方修复它。

通常,我更喜欢始终使用自定义后代类,而不是出于这个特定原因我将经常使用的股票类。

于 2009-01-14T01:02:54.280 回答
7

如果您所有的 DFM 文件不是二进制文件,而是文本文件(这是个好主意,除非您需要与 Delphi 4 或更早版本兼容),您当然可以使用 grep / sed / awk。DFM 的格式不固定,取而代之的是

  OldCreateOrder = False
  Scaled = False

它还可以包含

  OldCreateOrder = False Scaled = False

因此,您可以使用 grep 查找只有 TForm 具有的另一个属性,该属性在您的所有表单中设置为存储在 DFM 中的值(OldCreateOrder 将是候选对象),并用包含两个属性的另一行替换这些行。

下次您在 IDE 中保存该表单时,将更正该格式。

编辑:

如果您的表单是二进制的,则使用 Delphi bin 目录中的 convert.exe 工具(使用完整路径,因为 Windows 中有另一个 convert.exe)将 DFM 转换为文本,然后添加缺少的属性,然后(可选)转换将 DFM 恢复为二进制。如果您对奇怪的格式不满意 - 将 DFM 从文本转换为二进制再转换回文本,这将为您提供格式正确的文本 DFM 文件。所有这些都很容易编写脚本。

于 2009-01-14T08:05:35.860 回答
2

是的,GExpert 包括一个“设置组件属性”专家。它有一个“模拟”模式来看看它会做什么。此工具可用于在编译应用程序之前停用数据集或数据库连接。

于 2009-04-01T05:22:30.773 回答