使用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