DLL中的FORM DOCK不到主程序的tabsheet中,以下是DLL代码,不知道是什么原因?
function ShowForm(pnl1:TTabSheet) :Boolean ; export;
var
  frm : TForm1;
begin
  frm := TForm1.Create(Application);
  frm.ManualDock(pnl1,nil,alClient);
  frm.Show;
  frm.WindowState := wsMaximized;
  Result := True;
end;exports
  ShowForm name 'ShowForm';

解决方案 »

  1.   

    library Project1;uses
      ComCtrls, Forms,Controls,
      SysUtils,
      Classes;{$R *.res}
    function ShowForm(pnl1:TTabSheet) :Boolean ; export;
    var
      frm : TForm;
    begin
      frm := TForm.Create(Application);
      frm.ManualDock(pnl1,nil,alClient);
      frm.Show;
      frm.WindowState := wsMaximized;
      Result := True;
    end;
    exports
      ShowForm name 'ShowForm';begin
    end.
      

  2.   

    一楼的,我DLL文件里就是这样的啊,只不过我用的是unit1中的Tform1,应该没问题的
      

  3.   

    你的主程序与DLL的逻辑地址空间是不同的。主程序的TabSheet的指针是主程序中的逻辑地址,在DLL中访问此地址,只会是在DLL中查找定位。
    若用接口的方式(主程序提供接口,DLL调用接口方法,参数用句柄),可解决此问题。你的目的无非是想嵌入窗口,如果是想做成随意拖动设置窗口布局的话,最好是用BPL来封包各个窗口模块