Einzelnen Beitrag anzeigen

Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#8

AW: FMX:OpenGL-Panel oder Layout in 2D Formular

  Alt 2. Jul 2016, 21:29
Hallo Milos, Hallo Jens01 so gehts z.B.:
1.Dieses VCL-Panel FMX-Adapter einbinden
http://alex-ai.blogspot.de/2013/11/h...iremonkey.html
Delphi-Quellcode:
unit FMXAdapter;
 
interface
 
uses
  FMX.Forms,
  Vcl.ExtCtrls;
 
type
  TFMX_Adapter_Panel = class(Vcl.ExtCtrls.TPanel)
  private
    FForm: TCommonCustomForm;
    procedure ResizeForm;
    procedure SetForm(const AForm: TCommonCustomForm);
  protected
    procedure Resize; override;
  public
    property Form: TCommonCustomForm read FForm write SetForm;
  end;
 
implementation
 
uses
  Types,
  Winapi.Windows, System.SysUtils,
  FMX.Platform.Win;
 
 
{ TFMX_Adapter_Panel }
 
procedure TFMX_Adapter_Panel.Resize;
begin
  inherited;
  ResizeForm();
end;
 
procedure TFMX_Adapter_Panel.ResizeForm;
begin
  if Assigned(FForm) then begin
    FForm.SetBounds(BorderWidth, BorderWidth, ClientWidth + BorderWidth, ClientHeight + BorderWidth);
  end;
end;
 
procedure TFMX_Adapter_Panel.SetForm(const AForm: TCommonCustomForm);
begin
  FForm := AForm;
  FForm.BorderIcons := [];
  FForm.BorderStyle := TFmxFormBorderStyle.bsNone;
  FForm.Visible := True;
  Winapi.Windows.SetParent( FmxHandleToHWND(FForm.Handle),Handle );
  FForm.Left:=0;
  FForm.Top:=0;
  FForm.Width:=width;
  FForm.Height:=height;
  ResizeForm();
end;
 
end.

2. und in einem FMX-Fenster plazieren über:
 FMX_Adapter_Panel.ParentWindow := FormToHWND( Self );

3. Ein weiteres FMX-Fenster FMX_Render_Form in diesem
FMX_Adapter_Panel plazieren über:
FMX_Adapter_Panel.Form:=FMX_Render_Form;
// SetForm gegenüber dem Link geändert, damit sich das Form sauber im Panel plaziert.

4. Dann kannst Du Dein Bsp. drinnen laufen lassen, indem Du Dein FMX_Render_Form übergibst:
http://esv.cocolog-nifty.com/blog/opengl/index.html
http://escargot.la.coocan.jp/SimpleS...OpenGL_FMX.pas

Ich hab auch versucht in das VCL-Panel zu rendern. Es tat sich aber nichts.
Beim FMX-Form im VCL-Panel geht es.

Die Frage ist: Wie läuft das Ganze unter Android, wenn man bei diesem Weg ein VCL-Panel als Container nehmen muss ?

Man kann auch ein FMX-Form in ein anderes legen über
 Winapi.Windows.SetParent( FmxHandleToHWND(Form_x.Handle),FmxHandleToHWND(Handle) ); doch wenn man den Rahmen und die Icons wegnimmt geht es nicht mehr - seltsam.

Embarcadero könnte da mal was passendes liefern.

Geändert von luisk ( 3. Jul 2016 um 06:27 Uhr)
  Mit Zitat antworten Zitat