在Delphi XE2之前,我们只有VCL才能创建GUI应用程序。 Delphi XE2指出:
我的应用程序是使用运行时程序包构建的纯VCL应用程序。所有VCL表单都存储在运行时包中。如果要创建FireMonkey表单并将其存储在包中,我是否有机会在运行时在我的VCL应用程序中实例化此FireMonkey表单?因此,我可能会喜欢FireMonkey的3D或HD效果。
最佳答案
这完全有可能,因为FMX表单可以分配给面板。
有关详细信息,请参见this blog article:
实际上,FMXAdapter.pas代码非常简短:
procedure TPanel.Resize;
begin
inherited;
ResizeForm();
end;
procedure TPanel.ResizeForm;
begin
if Assigned(FForm) then
Platform.SetWindowRect(FForm, RectF(BorderWidth, BorderWidth,
ClientWidth + BorderWidth, ClientHeight + BorderWidth));
end;
procedure TPanel.SetForm(const AForm: TCommonCustomForm);
begin
FForm := AForm;
FForm.BorderIcons := [];
FForm.BorderStyle := TFmxFormBorderStyle.bsNone;
ResizeForm();
FForm.Visible := True;
Winapi.Windows.SetParent(FmxHandleToHWND(FForm.Handle), Handle);
end;