Geht ganz einfach so
Delphi-Quellcode:
unit FormMain;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls;
type
TMainForm =
class( TForm )
Panel1 : TPanel;
Button1 : TButton;
procedure Button1Click( Sender : TObject );
private
FSubView : TComponent;
public
{ Public-Deklarationen }
end;
var
MainForm : TMainForm;
implementation
{$R *.fmx}
uses
FMX.
Platform.Win,
VclFormTest;
procedure TMainForm.Button1Click( Sender : TObject );
var
LForm : TTestFormVcl;
begin
if Assigned( FSubView )
then
FreeAndNil( FSubView );
LForm := TTestFormVcl.Create( Self );
try
// ParentWindow Handle übergeben
LForm.ParentWindow := FormToHWND( Self );
LForm.Show;
FSubView := LForm;
LForm :=
nil;
finally
LForm.Free;
end;
end;
end.
Das ist in Grundzügen das worauf es ankommt.
Ein
TPanel
hat aber kein
Handle, also muss man sich eine
VCL-Container-Form bauen, die ist dann der
VCL-Form ein Zuhause gibt und die Container-Form wird dann in das Panel gelegt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)