在我看来,Delphi XE6 IDE 忘了我过去创建的所有TFrame
个后代。
更具体地说,当我点击标准 - >框架,用于选择框架的对话框不再显示。
相反,它显示以下错误消息:
无框架可供插入。可以从File | New | Other选项创建新帧。
有没有办法纠正这种情况?
EDIT1 重现的步骤很遗憾:我真的不确定这是怎么发生的,但确实如此。我认为从某些版本的Delphi升级到另一个版本时可能存在罪魁祸首。因为我随着时间的推移多次升级,我记得在Delphi 7中启动项目,然后有一些版本我不记得哪些版本,我使用的最后两个版本是XE2,直到现在是XE6。
Edit2 如果在XE2之前使用Delphi版本创建了框架,就会发生这种情况。
答案 0 :(得分:8)
问题的原因是在添加.dproj
框架时对Firemonkey
文件进行了更改。为了区分为vcl
制作的帧和为fmx
制作的帧,我们将.dproj
文件添加到.dproj
文件中,如下所示。要对.dproj
文件进行更正,请执行以下操作:
关闭Delphi IDE。
使用您选择的文本编辑器打开TFrame
文件。
逐个查找TFrame
。
我们假设以下是您的<DCCReference Include="Results.pas">
<Form>FrameResults</Form>
<DesignClass>TFrame</DesignClass>
</DCCReference>
部分:
<FormType>dfm</FormType>
修复方法是在该部分添加以下行:
fmx
(在<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 文件。