Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   VCL-Form in FireMonkey-Panel einbinden (https://www.delphipraxis.net/178906-vcl-form-firemonkey-panel-einbinden.html)

Golli18 3. Feb 2014 08:57

Delphi-Version: 5

VCL-Form in FireMonkey-Panel einbinden
 
Hallo Forum!

Man hat die Möglichkeit, eine Form in ein Panel einer anderen Form zu "öffnen". Hier ein Link: http://docwiki.embarcadero.com/CodeE...m_%28Delphi%29. Aber leider klappt das nur, wenn beide Formen FireMonkey-Formulare sind. In meinem Projekt habe ich allerdings als Hauptform eine FireMonkey und als Parent-Form ein VCL-Fomular. Leider klappt das nicht. Gibt es trotztem eine Möglichkeit ein VCL-Formular in ein Panel unter FireMonkey anzuzeigen? Leider bin ich auf das VCL angewiesen und das lässt sich auch nicht ändern.

LG

Der Golli

Der schöne Günther 3. Feb 2014 09:18

AW: VCL-Form in FireMonkey-Panel einbinden
 
VCL und FireMonkey sind generell ein "Entweder-oder". Es gibt ein paar Tricksereien, wie man ein Firemonkey-Formular in eine VCL-Anwendung integrieren* kann, aber umgekehrt habe ich noch nichts gesehen. Und hätte ehrlich gesagt auch ziemlich wenig Hoffnung.

* Ich finde es auf die Schnelle nicht mehr, aber es waren ein oder zwei Blogbeiträge die mit Quelltext zeigten, wie es möglich war.

PS: Wieso gibt du "Delphi Version: 5" an?

Sherlock 3. Feb 2014 09:44

AW: VCL-Form in FireMonkey-Panel einbinden
 
Eventuell ist XE5 gemeint...

Und ja: VCL und FMX sollte man lieber nicht mischen.

Sherlock

Sir Rufo 3. Feb 2014 09:45

AW: VCL-Form in FireMonkey-Panel einbinden
 
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
Delphi-Quellcode:
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.

Golli18 4. Feb 2014 07:36

AW: VCL-Form in FireMonkey-Panel einbinden
 
Hallo Sir Rufo,

kannst du mir vllt. noch sagen, wie ich den VCL-Container mache oder mich auf einen Link verweisen?

Mit freundlichen Grüßen

Golli

Sir Rufo 4. Feb 2014 09:53

AW: VCL-Form in FireMonkey-Panel einbinden
 
Zitat:

Zitat von Golli18 (Beitrag 1246562)
Hallo Sir Rufo,

kannst du mir vllt. noch sagen, wie ich den VCL-Container mache oder mich auf einen Link verweisen?

Mit freundlichen Grüßen

Golli

Ei jo, da Delphi-Referenz durchsuchenFMX.Forms.TForm


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz