10

它发生在我身上,Delphi XE6 IDE忘记TFrame了我过去创建的所有后代。

更具体地说,当我单击 Standard -> Frames 时,选择我的框架的对话框不再显示。

相反,它显示以下错误消息:

没有可插入的框架。可以从文件|新建|其他选择中创建新框架。

有没有办法补救这种情况?

EDIT1遗憾的是无法复制步骤:老实说,我不确定这是怎么发生的,但确实如此。我认为从某些版本的 Delphi 升级到另一个版本时可能是罪魁祸首。随着时间的推移,我多次进行此升级,我记得在 Delphi 7 中启动项目,然后有一些我不记得的版本,我使用的最后两个版本是 XE2,直到现在是 XE6。


Edit2如果框架是使用 XE2 之前的 Delphi 版本创建的,则会发生这种情况。

4

3 回答 3

25

问题的原因在于添加框架.dproj时对文件的更改。Firemonkey为了区分为 a 制作的vcl框架和为fmx一行制作的框架,添加到.dproj文件中,如下所示。要对.dproj文件进行更正,请执行以下操作:

  1. 关闭 Delphi IDE。

  2. .dproj使用您选择的文本编辑器打开文件。

  3. 一张TFrame一张的查。

  4. 假设以下是您的TFrame部分:

    <DCCReference Include="Results.pas">
        <Form>FrameResults</Form>
        <DesignClass>TFrame</DesignClass>
    </DCCReference>
    
  5. 修复方法是将以下行添加到该部分:

        <FormType>dfm</FormType>
    

(在fmx项目中线是<FormType>fmx</FormType>

于 2018-04-27T17:56:31.867 回答
0

我发生了这种情况;就我而言,这要简单得多。

我有一个包含一些框架的 fmx 项目和一个不在单个项目组(不同的子目录)中的 vcl 项目。

如果我打开一个 fmx 单元并尝试从组件菜单中添加一个框架,但将 vcl 项目作为编译目标,那么我会收到此消息。将编译目标更改为包含我打开的单元的应用程序,并且帧集合停止了错误。

于 2019-12-17T21:18:49.427 回答
0

IDE 中似乎存在错误。具体来说,IDE 提供了IOTASourceEditor接口,它有CreateWriter获取IOTAEditWriter接口的方法。

某些 IDE 扩展可能会使用IOTAEditWriter接口的方法来(例如)编辑 .dpr 文件的内容(基本上,只需一系列.DeleteTo.Insert就足够了)。显然,这以某种方式迫使 IDE 损坏 .dproj 文件。

于 2020-12-22T18:41:51.127 回答