使用Delphi XE2,您可以选择将自定义样式(皮肤)嵌入到VCL项目中。
一切工作正常。现在,我将一些表单转换为动态显示的分离的dll。
当然,这些都不是皮肤。我该如何纠正?如何将Delphi XE2皮肤应用于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窗体使用主机的风格主题,必须做些什么?
你重新编译XE2的DLL“功能不受此样式支持”? –
这是一个DLL而不是一个包? –
是的。但它并没有选择原来的主题。 – Lobuno