Это продолжение моего вопроса: How can I display a Delphi form in a panel?Как использовать глобальную переменную формы, чтобы поместить ее в панель?
Я хочу использовать формирует глобальную переменную, чтобы вставить его в панели, чтобы отобразить его сейчас, но это только создает форму для встраивания, без его кнопок.
В коде исполняемого файла я создаю форму, чтобы вставить первый и форму, что я хочу, чтобы вставить его в секунду, например, так:
program Project1;
uses
System.StartUpCopy,
FMX.Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
код основной формой является:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Panel1: TPanel;
procedure EmbedForm(ArgParent : TControl; ArgForm : TCustomForm);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses Unit2;
procedure TForm1.FormCreate(Sender: TObject);
begin
EmbedForm(Panel1, Form2);
end;
procedure TForm1.EmbedForm(ArgParent: TControl; ArgForm: TCustomForm);
begin
while ArgForm.ChildrenCount>0 do
begin
ArgForm.Children[0].Parent:= ArgParent;
end;
end;
end.
код формы для встраивания является:
unit Unit2;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls;
type
TForm2 = class(TForm)
Button2: TButton;
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
end.
Ваши обращения к CreateForm назад. Первый вызов CreateForm определяет, какая форма является основной формой приложения, поэтому вы пытаетесь встроить свою основную форму в дочернюю форму, и это не поможет вам. Есть ли причина, по которой вы не используете фреймы, стыковки или вкладки для того, что вы пытаетесь сделать? –
Если я делаю это в этом порядке, я получаю сообщение об исключении класса $ c00000005. Я просто пытаюсь разобраться сейчас, поэтому нет особых причин. – Friso
@ Ken Это потому, что ассер придерживался совета примера Embarcadero. Это кажется странным. Link is in prev Q. –