如何在运行时列出bpl文件中包含哪些窗体?在dpk包内都窗体单元中,在初始化处有注册窗体类:
initialization
  RegisterClass(TfrmAbout);LoadPackage载入包时,可以通过GetClass(窗体类名)取得已经注册的类,现在的问题在于,包非常多,不希望程序已启动就全部载入,影响速度,而是当要呼出制定窗体时,在载入对应包(需要才载入),目前的做法是建一个配置文件来记录窗体类名和包都关系。但这样要手动维护这个配置文件,比较麻烦。所以现在的需求是,能否给你一个bpl文件,程序运行时不载人该bpl文件,就列出这个bpl内有哪些窗体类?这样我就可以程序一运行时就把所有bpl和窗体类名建立一个对应关系,而不需要一个配置文件。

解决方案 »

  1.   


    1、不加载就不能列出这个bpl内有哪些窗体类;
    2、不需要配置文件也可以读出bpl的的窗口类;
      

  2.   

    包很多,不可能一启动就全部加载,如果全部加载就已经全部都注册了,也就是所有窗体都可以直接调用了,就无需列出bpl中的窗体类。
    所以需求在于根据需要加载,也就是给你一个窗体类名,要找到对应的包,在加载这个包即可。
      

  3.   

    举例: 
    1、运行时只知道一个窗体类名的字符串,如“TfrmAbout”,
    2、取得这个窗体类所在包的文件名,如“XXX.Bpl”,
    3、然后用LoadPackage载入这个包,这时这个包内都所有窗体类都已经注册了,包括“TfrmAbout”
    4、最后呼叫出“TfrmAbout”这个窗体这个过程已经实现,但第2步需要一个包和窗体对应关系的配置文件。所以希望摆脱这个配置文件,也能实现上面的功能。