So würde ich den Code formulieren:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, child;
type
TForm1 =
class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
// Feld für das Form anlegen
FEmbeddedForm: TForm2;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// Das Form soll Form1 als Owner haben
// deshalb wird Self angegeben.
// Dadurch wird das Form automatisch freigegeben
// wenn das Form1 gechlossen/freigegeben wird...
FEmbeddedForm := TForm2.Create(Self);
// Als Parent wird Panel1 verwendet.
// Parent gibt an auf welchen Control
// das Form platziert werden soll.
FEmbeddedForm.Parent := Self.Panel1;
// Ein paar Eigenschaften des Forms festlegen.
// Ich würde eher Align verwenden.
// Deshalb habe ich das auskommentiert...
//FEmbeddedForm.Width := 500;
//FEmbeddedForm.Height := 500;
//FEmbeddedForm.Top := 10;
//FEmbeddedForm.Left := 10;
// Mit Align := alClient ist das Form
// immer genau so groß wie das Panel1...
FEmbeddedForm.Align := alClient;
// Zu guter letzt das Form noch sichtbar machen
FEmbeddedForm.Visible := True;
end;
end.
Wichtig: Form2 muss noch aus der Liste der automatisch zu erstellenden Formulare entfernt werden. Menü > Projekt > Optionen > Formulare > In der Liste links Form2 markieren und auf den ">"-Button klicken. Dann landet Form2 in der rechten Liste!