DLL窗体怎么加载到cxPageControl中,谢谢!

水向东流时光怎么偷 2015-07-31 03:04:07
怎么把dll载入到cxpagecontrol中?
现在用的方法只能打一个个打开,怎么能多个显示到page页上?:
 
function ShowDllForm(DLLName: string; ProcName: string; Owner: TForm): Boolean;
var
DllHd: THandle;
ShowDllFormProc: Pointer;
OwnerHandle: HWND;
begin

if Owner = nil then
OwnerHandle := 0
else
OwnerHandle := Owner.Handle;

//ShowMessage(DLLName );
if not FileExists(ExtractFilePath(Application.ExeName) + DLLName) then
begin

MessageBox(OwnerHandle, PChar('找不到文件' + DLLName + ',请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
Result := False;
Exit;
end;
DllHd := LoadLibrary(PChar(DLLName));
if DllHd = 0 then
begin
ShowMessage(DLLName);
MessageBox(OwnerHandle, PChar('加载' + DLLName + '错误,请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
FreeLibrary(DllHd);
Result := False;
Exit;
end;

ShowDllFormProc := GetProcAddress(DllHd, PChar(ProcName));
// ShowMessage('test');
if ShowDllFormProc = nil then
begin

MessageBox(OwnerHandle,
PChar('查找' + DLLName + '中函数' + ProcName + '出错,请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
FreeLibrary(DllHd);
Result := False;
Exit;
end;
// ShowMessage('test2');

try
Result := TShowDllFormProc(ShowDllFormProc)(Owner);
except
MessageBox(OwnerHandle,
PChar('执行' + DLLName + '中函数' + ProcName + '出错,请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
FreeLibrary(DllHd);
Result := False;
Exit;
end;
FreeLibrary(DllHd);

end;
//调用
ShowDllForm('Sys.dll','ShowSYSParamsSetForm',Self);

//SYS.dll中ShowSYSParamsSetForm 写法

function ShowSYSParamsSetForm(Owner : TForm ) : Boolean;stdcall ;
var
frmParamsSet : TfrmParamsSet ;
begin

Application.Handle := CommData.ApplicationHandle ;
frmParamsSet := TfrmParamsSet.Create(Owner );
frmParamsSet.ShowModal;
Result := True ;
FreeAndNil(frmParamsSet);

end;

...全文
152 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘中人 2015-07-31
  • 打赏
  • 举报
回复
你这是ShowModal模态窗体啊
缘中人 2015-07-31
  • 打赏
  • 举报
回复
一个form能加载到pagecontrol里?

5,379

社区成员

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

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