如何将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实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |