Delphi:TFrame错误没有帧可用于插入

时间:2018-04-27 17:56:32

标签: delphi tframe

在我看来,Delphi XE6 IDE 忘了我过去创建的所有TFrame个后代。

更具体地说,当我点击标准 - >框架,用于选择框架的对话框不再显示。

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

  

无框架可供插入。可以从File | New | Other选项创建新帧。

有没有办法纠正这种情况?

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

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

3 个答案:

答案 0 :(得分:8)

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

  1. 关闭Delphi IDE。

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

  3. 逐个查找TFrame

  4. 我们假设以下是您的<DCCReference Include="Results.pas"> <Form>FrameResults</Form> <DesignClass>TFrame</DesignClass> </DCCReference> 部分:

        <FormType>dfm</FormType>
    
  5. 修复方法是在该部分添加以下行:

    fmx
  6. (在<FormType>fmx</FormType>项目中,该行为<!DOCTYPE html> <html> <head> <style> .elements { text-align: center; } .random { margin-top: 100px; width: 275px; height: 200px; font-size: 50px; text-align: center; } .range { margin: 35px 25px; width: 100px; height: 100px; text-align: center; font-size: 30px; } .generate { margin-top: 50px; width: 250px; height: 35px; font-size: 20px; } </style> <script language="javascript" type="text/javascript"> function rand() { var max = document.getElementById("max").value; var min = document.getElementById("min").value; var output = document.getElementById("output"); var random = Math.floor(Math.random() * max + min); output.value = random; } </script> </head> <body> <div class="elements"> <input type="text" class="random" id="output"> <br> <input type="button" class="generate" value="Generate random number" onclick="rand();"> <br> <h1>Maximum Number</h1> <input type="text" class="range" id="max"> <h1>Minimal Number</h1> <input type="text" class="range" id="min"> </div> </body> </html>

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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