Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: VCL-Form in FireMonkey-Panel einbinden

  Alt 3. Feb 2014, 09:45
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)
  Mit Zitat antworten Zitat