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.