如何不用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方式,就无法接受消息,具体原因还没有查
过。不过,我觉得这种方式还是蛮不错的。
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方式,就无法接受消息,具体原因还没有查
过。不过,我觉得这种方式还是蛮不错的。