Delphi - IDE 从哪里获取窗体名称列表?

4
特别是在填充“可继承项”和“表单创建”对话框时。
我提出这个问题是因为自从几天前以来,我无法再创建可继承的项目了,因为每个表单名称后面都有一个空格(或制表符?),所以当我继承时就会出现错误消息,例如“basewindow 2不是有效的标识符”(请注意basewindow和2之间的空格)。
对于我来说,这非常阻碍,因为项目中的所有表单都是从一个共同的祖先继承而来的...
注意:在新创建的表单中,没有空格,它们可以正常工作。这是一个d2010计划,没有加载额外的IDE工具或实用程序; 注意2:这仅涉及一个项目。
有任何想法吗?
谢谢 Didier
1个回答

11

我在研究关于这个问题的内容,参考了此问题:Register custom form so I can inherit from it from multiple projects, without copying the form to the Object Repository folder。虽然我的答案中没有提到,但我后来得出结论,IDE 只允许您从项目明确添加的项中继承。

因此,我认为它会从 dpr 文件中获取那些可继承的项。类似这样的一行:

  UnitOKFrame in 'UnitOKFrame.pas' {OKFrame: TFrame},

将OKFrame添加到可继承项列表中。

所以我的“猜测”是,你的表单/框架名称与分隔其类型的冒号之间出现了额外的空格。例如:

  UnitOKFrame in 'UnitOKFrame.pas' {OKFrame : TFrame},

如果确实是这种情况,我会向Embarcadero提交一个QC报告。他们可以费心地使dpr解析更加健壮和友好,以方便我们这些可怜的程序员 :-)...


如Uwe在评论中提到的那样,表单没有包含类型标识符:

  UnitLogonForm in 'UnitLogonForm.pas' {LogonForm},

在这种情况下,您可能会在实际名称周围的花括号之间有额外的空格:

  UnitLogonForm in 'UnitLogonForm.pas' {LogonForm },

在表单的情况下,冒号和类名被省略。 - Uwe Raabe
@Uwe:谢谢,我没有注意到。我会修改我的答案以包含它。 - Marjan Venema
1
如果我没记错的话,在 *.dpr 上使用内置代码格式化工具会通过插入额外的空格来破坏 pas-dfm 的相关性。 - Uli Gerhardt
+1,对于大多数实际目的来说,这(不幸地)是IDE获取其列表的位置。理论上,您还可以编写专家以将新项目添加到“新建”库中。 - Cosmin Prund
Marjan,你说得非常正确;我知道我是怎么做到的:我不小心按下了重新格式化(ctrl+D)而不是保存(CTRL+S)dpr文件!!!之后我遇到了几个问题:无法继承窗口,在打开项目时主窗体无法打开,有时在项目中找不到表单等等... 我会提交一个QC。 - Didiergm
今天刚遇到这个问题。发现如果在单元中的类实现之前放置的注释也是错误的(看起来像 { TForm1 }),那么该窗体也无法出现在可继承项列表中。 - Leonardo Herrera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接