Dll中有一个frame,名字为frame1
入口函数如下:
procedure DoTradeList(H: THandle; AConn: TADOConnection;aa:Thandle);
 var
    theframe:TFrame;
  begin                         
    application.Handle:=H;
    try
      theframe:=Tframe1.Create(application);
      theframe.Parent:=@aa;
      theframe.Align:=alClient;
      theframe.Show;
    finally
      theframe.Free;
    end;
  end;
end.
主程序里
procedure TfrmMain.rgRptItems0Click(Sender: TObject);
begin
  Try
    CreateTabSheet:=TRztabsheet.Create(self);
    CreateTabSheet.PageControl:=pgcWorkArea;
    CreateTabSheet.caption:='XXXX';
    pgcworkarea.ActivePage:=CreateTabSheet;
    DoTradeList(self.Handle,dm.dbView,createtabsheet.Handle );
  Except
    MessageDlg('功能已经打开',mtInformation,[mbOK],0);
  End;
end;以上写法,没有任何错误,也会自动创建一个名字为XXXX的tabSheet,但就是Dll中的frame1界面无法显示出来,试了很多方法都不行,请高手指点。

解决方案 »

  1.   

    Project->Options->Packages->  Build xxxx  选项勾上即可
    注意:主程序和dll都勾上
      

  2.   

    果然可以了,不过又出来个新问题,关闭主程序的时候出现:Runtimes error 216 at XXXXX
    应该是释放dll的问题,不知道怎么操作
      

  3.   

    看这段,是不是frame建立后马上就释放了。
    try
      theframe:=Tframe1.Create(application);
      theframe.Parent:=@aa;
      theframe.Align:=alClient;
      theframe.Show;
    finally
      theframe.Free;
    end;