Einzelnen Beitrag anzeigen

Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: VCL Formular in ein Panel einbetten

  Alt 12. Jun 2019, 09:08
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!
Andreas Lauß
Blog

Geändert von Andreas L. (12. Jun 2019 um 09:13 Uhr)
  Mit Zitat antworten Zitat