如何不用MDI方式在Form1上显示Form2

假设你需要在TForm1的Panel1上显示TForm2,最简单的方法是改写TForm2.
TForm2=class(TForm)
private
  ...
public
  constructor Create(AOwner: TComponent); override;
end;

implementation

constructor TForm2.Create(AOwner: TComponent);
begin
  inherited;
  Parent := (AOwner as TWinControl);
  ParentWindow := (AOwner as TWinControl).Handle;
end;

同时设置TForm2的BorderStyle为bsNone,WindowState为wsMaximized。

在TForm1的调用时候:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TForm2.Create(Panel1) do
    Show;
end;

或许有人要问,为什么不直接用TFrame,而要这么费事用TForm。其实,
最早我也用TFrame实现一些功能,但是,后来发现如果TForm2中需要用
到一些消息控制,用TFrame方式,就无法接受消息,具体原因还没有查
过。不过,我觉得这种方式还是蛮不错的。  
原文地址:https://www.cnblogs.com/sonicit/p/822634.html