Делаем так, в dll метод создания формы может быть таким
procedure Init(ParentWindow: HWND; const Rect: Windows.TRect); stdcall;
begin
try
StartupInput.DebugEventCallback := nil;
StartupInput.SuppressBackgroundThread := False;
StartupInput.SuppressExternalCodecs := False;
StartupInput.GdiplusVersion := 1;
GdiplusStartup(gdiplusToken, @StartupInput, nil);
Form1 := TForm1.Create(nil);
Form1.Show;
if ParentWindow <> 0 then
begin
//Скроем иконку приложения с панели задач
ShowWindow(ApplicationHWND, SW_HIDE);
//Сменим стиль окна что бы оно не перехватывало фокус с родительского окна
SetWindowLong(FmxHandleToHWND(Form1.Handle), GWL_STYLE,
GetWindowLong(FmxHandleToHWND(Form1.Handle), GWL_STYLE) and (not WS_POPUP) OR WS_CHILD);
//Встроим окно в родительское
Windows.SetParent(FmxHandleToHWND(Form1.Handle), ParentWindow);
//Установим размеры окна такими которыми инициализирована DLL
SetWindowPos(FmxHandleToHWND(Form1.Handle), 0, Rect.Left, Rect.Top,
RectWidth(Rect), RectHeight(Rect), 0);
end;
except
on E: Exception do
MessageBox(0, PChar(E.Message), '', 0);
end;
end;
Эта функция создаст форму и встроит ее на хост в vcl приложении. У формы в dfm должен быть убраны границы что бы оно вписалось. Так же для того что бы форма изменяла размеры вписываясь в хост экспортируем функцию получения хэндла
function GetFormHandle: HWND; stdcall;
begin
Result := 0;
try
Result := FormToHWND(Form1);
except
on E: Exception do
MessageBox(0, PChar(E.Message), '', 0);
end;
end;
Собственно в хосте загружаем dll, и создаем форму кидая ее на панель
Init(panel1.Handle, panel1.ClientRect);
Что бы форма меняла размер как и панель - нужно создать обработчик изменения размеров панели и там менять размер встроенной формы
procedure THostForm.Panel1Resize(Sender: TObject);
var
h: HWND;
Rect: Windows.TRect;
begin
h := 0;
Rect := Panel1.ClientRect;
if Assigned(FGetFormHandleProc) then
h := FGetFormHandleProc;
if h <> 0 then
SetWindowPos(h, 0, Rect.Left, Rect.Top,
RectWidth(Rect), RectHeight(Rect), 0);
end;
Вот так получается втсроить FMX форму из Dll в VCL приложение