程序采用一个EXE+DLL的形式,DLL中输出一个函数GetFrame用来得到DLL中的一个Frame,
function GetFrame(AOwner : TComponent : TFrame;
begin
Result := TMyFrame.Create(AOwner); //TMyFrame是DLL中的一个Frame
end;
然后由EXE把这个Frame嵌入到主窗体中使用(一般是主窗体的一个Panel中)。
但是这样做我发现有几个问题:1.当MyFrame的ParentFont设置为True的时候,根本不能创建这个MyFrame,提示
'Cannot assign a TFont to a TFont'
2.如果MyFrame的父窗体已经显示,无法正确显示MyFrame,
必须先把父窗体Visible := False;等MyFrame创建并显示后,再把父窗体Visible := True,
这样才能正确显示MyFram
3.MyFrame中一定不能有Hint,如果有Hint显示,一定会报错,错误也是:
'Cannot assign a TFont to a TFont'我不知道是不是我哪里没有弄对,还是Delphi本身的局限。
谁能给我一个好的建议,或者答案?像这种问题,我在网上也查过,好像说把Exe的Application和Screen替换Dll,但是我试过一样的。在我的测试程序中只发现这3个问题,但是在我实际的程序中,问题比这个还要多,比如MyFrame中的字体
不能改变,颜色不能改变,一改变也会出现'Cannot assign a TFont to a TFont'或者其他莫名
错误。
function GetFrame(AOwner : TComponent : TFrame;
begin
Result := TMyFrame.Create(AOwner); //TMyFrame是DLL中的一个Frame
end;
然后由EXE把这个Frame嵌入到主窗体中使用(一般是主窗体的一个Panel中)。
但是这样做我发现有几个问题:1.当MyFrame的ParentFont设置为True的时候,根本不能创建这个MyFrame,提示
'Cannot assign a TFont to a TFont'
2.如果MyFrame的父窗体已经显示,无法正确显示MyFrame,
必须先把父窗体Visible := False;等MyFrame创建并显示后,再把父窗体Visible := True,
这样才能正确显示MyFram
3.MyFrame中一定不能有Hint,如果有Hint显示,一定会报错,错误也是:
'Cannot assign a TFont to a TFont'我不知道是不是我哪里没有弄对,还是Delphi本身的局限。
谁能给我一个好的建议,或者答案?像这种问题,我在网上也查过,好像说把Exe的Application和Screen替换Dll,但是我试过一样的。在我的测试程序中只发现这3个问题,但是在我实际的程序中,问题比这个还要多,比如MyFrame中的字体
不能改变,颜色不能改变,一改变也会出现'Cannot assign a TFont to a TFont'或者其他莫名
错误。
不知道aaronhocn采用内存映射方法大概是怎么实现的?
只要这两个runtime package 就可以了吗?那我做安装程序的时候需要增加哪些文件?最好不用runtime package。