首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请高手,关于DLL的manualdock有关问题?谢了

2012-09-07 
请高手求救,关于DLL的manualdock问题?谢了DLL中的FORM DOCK不到主程序的tabsheet中,以下是DLL代码,不知道

请高手求救,关于DLL的manualdock问题?谢了
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';

[解决办法]
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.
[解决办法]
你的主程序与DLL的逻辑地址空间是不同的。主程序的TabSheet的指针是主程序中的逻辑地址,在DLL中访问此地址,只会是在DLL中查找定位。
若用接口的方式(主程序提供接口,DLL调用接口方法,参数用句柄),可解决此问题。

你的目的无非是想嵌入窗口,如果是想做成随意拖动设置窗口布局的话,最好是用BPL来封包各个窗口模块

热点排行