• [转]DELPHI打开窗体时,提示父类文件找不到


    这两天,使用工程中突然在打开窗体的时候出错,大概的意思就是找不开父类文件(因为我是从其他窗体继承过来的)。但如果先打开父类窗体
    又不会出错。搞了很久,没有搞定。系统也重装,还是不行。最后看到下面这遍文章才解决。
    我的方法是,把父类窗体全部从工程中移除,再从新添加进来就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,则不会再有提示,可是每次都这样做太麻烦了,此时,你可以采用上面介绍的两种方法来完成修改,不让这个提示显示^_^

  • 相关阅读:
    1022词法分析的感想
    0909 对编译原理的看法
    0909 编译原理
    oracle安装不容易啊
    2016.8.24
    vue配置config ‘./.../.../***/**.vue’路径别名
    vue 路由过渡效果(1)
    域名配置DNS解析A记录,映射到主机
    vue 线上,本地,不同变量配置
    No 'Access-Control-Allow-Origin'跨域问题- (mysql-thinkphp) (6)
  • 原文地址:https://www.cnblogs.com/moon25/p/1625484.html
Copyright © 2020-2023  润新知