如何调用一个bpl中的窗体?比如在bpl中有个窗体类 TMyForm
在initialization中写上Registerclass(TMyForm)
然后在主程序中
LoadPackage('bpl.bpl')
然后
GetClass('TMyForm') 返回总是Nil, 我知道可能是主程序的设置问题 ,请问如何设置呢

解决方案 »

  1.   

    你是如何调用的?initializtion和finalization一般情况下是成对出现的。
    如下:
    initialization
      RegisterClass(TmyForm);
    finalization
      UnRegisterClass(TmyForm);
      
      

  2.   

    调用方法,可参考如下:
    procedure TForm1.ToolButton4Click(Sender: TObject);
    var
        vform: TForm;
        vFormClass: TFormClass;
    begin
      vFormClass := TFormClass(FindClass('TForm3'));
      if (vformClass <> nil) and not IsInclude(vFormClass) then
      begin
        vForm := vformClass.Create(application);
        try
          vform.Show;
        finally
        end;
      end;
    end;
      

  3.   


    initialization
      CoInitialize(nil);
      RegisterClass(TMyForm);finalization
      CoUninitialize;
      UnRegisterClass(TMyForm);end.你在 LoadPacket 後返回的HANDLE是否為0???  
      

  4.   

    原来是要把项目的Build with runtime Packages要选上。
    那是不是所有Delphi的包都是运行时连接的,那打包的时候不是要带n多bpl??
      

  5.   

    http://blog.csdn.net/SmallHand/archive/2009/03/19/4004111.aspx
      

  6.   

    原因其实很简单,楼主漏了在主程序的runtime package里面添加rtl这个包