Using Delphi XE2, you have the option to embed custom styles (skins) to a VCL project.
Everything works fine. Now I have some forms into a separated dll that I show dynamically.
Of course those are not skinned. How can I rectify that?
I guess I must do some call to TVisualStyle somehow, but no luck.
The host:
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;
The 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.
Pretty standard stuff. Now, what exactly must be done to make the dll form use the host's style theme?