我想在EXE文件中引用DLL中的一个Frame,但出现错误!
DLL中的代码如下:
function ShowFrame(FormHandle: Tapplication;TTT:TTabSheet): String;
var
Frame1: TFrame1 ;
begin
Frame1 := Frame1.Create(FormHandle);
Frame1.Parent := TTT ;
Frame1.Show ;
Result := '' ;
end;调用的代码如下:
ShowFrame(Application,TabSheet1) ;错误提示:
Project t_1.exe raised exception class EAccessViolation with message 'Access violation at address 004032C2 in module 't_1.exe',Read of address FAFCD3B9',Process stopped.Use Step or Run to contine.请问该如何解决!
DLL中的代码如下:
function ShowFrame(FormHandle: Tapplication;TTT:TTabSheet): String;
var
Frame1: TFrame1 ;
begin
Frame1 := Frame1.Create(FormHandle);
Frame1.Parent := TTT ;
Frame1.Show ;
Result := '' ;
end;调用的代码如下:
ShowFrame(Application,TabSheet1) ;错误提示:
Project t_1.exe raised exception class EAccessViolation with message 'Access violation at address 004032C2 in module 't_1.exe',Read of address FAFCD3B9',Process stopped.Use Step or Run to contine.请问该如何解决!
解决方案 »
- TWebBrowser中,如何获得点击链接事件﹖
- 谁在delphi中用过pdh指教一下?
- 做过三层的大侠,请进来帮帮忙!真让我头痛!
- 谁有EhLibBDE.dcu文件?我在安ehlib2.5时说缺少这个文件。
- dao操作access,执行ExcuteSQl时的问题
- 有什么办法让MDI窗口不生成左右或上下滚动条?
- sql字段值中含有脚本如何计算
- 使用数字键"1--------------7"通过内部扬声器来弹钢琴 (附源码)
- 请问用delphi怎么编写限制某些程序运行
- 其实我只是想做一个向导
- 在程序调用存储过程,该存储过程中使用到一个##Temp的全局临时表,只能使用一次,再次使用就提示出错!
- 感觉有些奇怪,不知怎么做,烦请大家,
后来我把DLL的frame封装到窗体上,还算可以的
这有一段代码DLL输出Form到Exe程序的panel上的var
myForm:Tform; //全局变量 procedure newWinCreate(WinID:HWND);
var
myRect:TRect;
begin
myForm:=Tdl.Create(nil);
(myForm as Tdl).init; //完成 Tdl的初始化代码
if WinID<>0 then
begin
myForm.Left:=0;
myForm.Top:=0;
GetWindowRect(WinID , myRect);
myform.Caption:=myTitle;
myForm.BorderStyle:=bsNone;
myForm.ParentWindow:=WinID;
myForm.Width:=myRect.Right-myRect.Left;
myForm.Height:=myRect.Bottom-myRect.Top;
myForm.Show;
end else
begin
GetWindowRect(WinID,myRect);
myform.Caption:=myTitle;
myForm.showmodel;
end;
end;
说明:
参数WinID是宿主程序Panel的handle,TDL是窗体类。调用newWinCreate(handle1.handle)即可完成。