这两天,使用工程中突然在打开窗体的时候出错,大概的意思就是找不开父类文件(因为我是从其他窗体继承过来的)。但如果先打开父类窗体
又不会出错。搞了很久,没有搞定。系统也重装,还是不行。最后看到下面这遍文章才解决。
我的方法是,把父类窗体全部从工程中移除,再从新添加进来就OK了。
有的时候,我们会碰到一些比较烦人的东西,打开某个继承的窗体,会提示说基类窗体找不到,并且找不开这个窗体,必须先打开基类窗体,然后再打开此窗体,才可以进行设计模式。其实出现这种情况的原因,就是因为工程dpr文件中,没有添加此基类的Form文件造成的,多是由于系统移植造成的,你也可以自己来玩一下。
解决办法:可以在View菜单中选择Project Manager或者Ctrl+Alt+F11来查看,基类中一定只有pas文件,如果继承的窗体少,你可以直接将继承的窗体去掉,然后将基类的单元文件先移除工程,然后再添加进去就可以了,或者你直接在dpr文件中添加此窗体的声明,形如{XXForm}之类的内容。下面举例说明一下:
首先新建一个工程,其工程文件如下所示:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
你直接将{Form1}去掉,保存,然后再打开的时候,工程文件中仍然包括Unit1.pas,但是此文件已经不包含Unit1.dfm。此时不要紧,你打开工程文件的时候,仍然可以看到窗体Form1,因为它就在当前的搜索路径下面。
然后将{Form1}还原上去,再File-->New-->Other找到Project1下面有选择Form1 Inherited则生成Form2。这时工程文件Uses中多了行代码 Unit2 in 'Unit2.pas' {Form2},接去掉{Form1},保存退出,重新打开,问题就出现了,会提示这样的错误:
Error creating form: Ancestor for 'TForm1' not found.
你如果关闭掉Form2,然后打开Form1,再打开Form2,则不会再有提示,可是每次都这样做太麻烦了,此时,你可以采用上面介绍的两种方法来完成修改,不让这个提示显示^_^