加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何将Delphi XE2外观应用于DLL中的表单?

发布时间:2020-12-15 09:49:02 所属栏目:大数据 来源:网络整理
导读:使用Delphi XE2,您可以选择将自定义样式(外观)嵌入到VCL项目中. 一切正常.现在我将一些表单放入一个动态显示的分隔dll中. 当然那些没有剥皮.我该如何纠正? 我想我必须以某种方式打电话给TVisualStyle,但没有运气. 主人: procedure TForm1.Button1Click(Sen
使用Delphi XE2,您可以选择将自定义样式(外观)嵌入到VCL项目中.
一切正常.现在我将一些表单放入一个动态显示的分隔dll中.
当然那些没有剥皮.我该如何纠正?

我想我必须以某种方式打电话给TVisualStyle,但没有运气.

主人:

procedure TForm1.Button1Click(Sender: TObject); 
var   
  l: THandle;   
  p: procedure (const h: THandle); stdcall; 
begin   
 l:= LoadLibrary('project1.dll');   
 if l > 0 then   
 begin
        @p:= GetProcAddress(l,'ShowIt');
        p(Application.Handle);
        FreeLibrary(l);   
  end; 
end;

dll:

procedure ShowIt(const h: THandle);stdcall;
var
  form: TForm;
  b: TButton;
  han: THandle;
begin
  han:= Application.Handle;
  Application.Handle:= h;
  form :=Tform.Create(Application);
  b:= TButton.Create(form);
  b.Parent:= form;
  b.Caption:= 'ytes';
  b.Left:= 2;
  b.Top:= 2;
  form.ShowModal;
  form.Release;
  Application.Handle:= han;
end;

exports ShowIt ;
begin
end.

很标准的东西.现在,要使dll表单使用主机的样式主题,究竟必须做些什么?

解决方法

您有两个不同的VCL实例.您已在可执行文件所拥有的 StyleServices实例中设置样式,但您的DLL不知道这一点.您可以通过以下方式解决此问题

>将样式设置传递给DLL中的函数,该函数将这些设置应用于其他StyleServices实例.>使用包,这样您只有一个VCL实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读