Delphi-子窗体具有父窗体的框架



我有一个具有多种表单的delphi应用程序。最初,我尝试了一种设置,每个新打开的窗体都是一个框架,当显示子窗体时,该窗体的"父窗体"(调用以打开窗体的窗体)被隐藏,子窗体被调整大小并重新定位,以提供一个窗口的无缝效果,当子窗体关闭时,父窗体被重新定位并再次可见。所有窗体的Windows标题栏都有bsSingle边框样式。这种方法在定位方面效果很好,但我遇到的问题是,当父窗体关闭,子窗体打开时,会出现明显的闪烁,并且在很短的一段时间内没有打开窗体,启动栏上的图标/托盘会四处移动,其本身会变得隐藏和可见。

有人对解决这个问题有什么建议吗?我想,如果我在申请中只有一个带边框的表格,并在这个边框内打开每个新表格,效果会更好——尽管我不确定具体如何做到这一点。

非常感谢您的帮助。

使一个窗体在另一个窗体中显示为子窗体很容易。创建一个新表单,该表单将包含并创建您的其他表单:

procedure TMainForm.FormCreate(Sender: TObject);
var
  F : TForm;
begin
  F := TOneOfYourChildForms.Create(Self);
  F.Parent := Self;
  F.Show();
end;

创建两个类似的子窗体,然后只需在要显示的窗体上显示,在另一个窗体上隐藏。在子窗体上将BorderStyle设置为bsNone以删除标题。如果您自己这样创建表单,请在项目设置中禁用"自动创建"。

我在这个设计上取得了成功,我认为在TFrame中包含"主窗体"的内容也有所帮助。当你想显示主窗体时,你只需要执行一个帧交换。

最新更新