5,913
社区成员




在进行多设备开发时,如何将窗口B融合到窗口A的某个控件C内呢?Vcl下的很方便,设置窗口B的Parent为控件C就行了。
但在多设备模式下,设置了也是独立显示,代码如下:
unit UnitParent;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls;
type
TMultiParentForm = class(TForm)
CornerButton1: TCornerButton;
CornerButton2: TCornerButton;
Panel1: TPanel;
procedure CornerButton1Click(Sender: TObject);
procedure CornerButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MultiParentForm: TMultiParentForm;
implementation
uses UnitChild;
{$R *.fmx}
procedure TMultiParentForm.CornerButton1Click(Sender: TObject);
begin
// 独立显示
if not Assigned(MultiChildForm) then
MultiChildForm := TMultiChildForm.Create(nil);
MultiChildForm.Show;
end;
procedure TMultiParentForm.CornerButton2Click(Sender: TObject);
begin
// 融合显示
if not Assigned(MultiChildForm) then
MultiChildForm := TMultiChildForm.Create(Panel1);
MultiChildForm.Parent := Panel1;
MultiChildForm.Show;
end;
end.
unit UnitChild;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.Edit, FMX.Objects;
type
TMultiChildForm = class(TForm)
Rectangle1: TRectangle;
Edit1: TEdit;
StyleBook1: TStyleBook;
private
{ Private declarations }
public
{ Public declarations }
end;
var
MultiChildForm: TMultiChildForm;
implementation
{$R *.fmx}
end.
显示效果图:
不论按那个按钮,显示都是一样的,难道FMX不支持这种窗口融合的方式?
窗口边框去掉,并设置为半透明~
Frame无法使用StyleBook?你的意思是背景吗?
那就加个Rectangle做背景,一个StyleBook是整个工程共享的