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

charlieckl 2012-02-21 03:14:40
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';
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
闪闪棉花糖 2021-06-13
  • 打赏
  • 举报
回复

有没有解决,大佬

闪闪棉花糖 2021-06-13
  • 打赏
  • 举报
回复

有没有解决,大佬

金卯刀 2012-02-22
  • 打赏
  • 举报
回复
你的主程序与DLL的逻辑地址空间是不同的。主程序的TabSheet的指针是主程序中的逻辑地址,在DLL中访问此地址,只会是在DLL中查找定位。
若用接口的方式(主程序提供接口,DLL调用接口方法,参数用句柄),可解决此问题。

你的目的无非是想嵌入窗口,如果是想做成随意拖动设置窗口布局的话,最好是用BPL来封包各个窗口模块
charlieckl1234 2012-02-21
  • 打赏
  • 举报
回复
一楼的,我DLL文件里就是这样的啊,只不过我用的是unit1中的Tform1,应该没问题的
lsw603 2012-02-21
  • 打赏
  • 举报
回复
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.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧