在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;

08-18 14:48