0

我有一个具有多种形式的德尔福应用程序。最初我尝试了一个设置,其中每个新打开的表单都是一个框架,并且这个表单的“父级”(无论调用哪个打开表单)都被隐藏,因为孩子被显示,孩子正在调整大小和重新定位以提供无缝效果有一个窗口,当孩子关闭时,父母被重新定位并再次可见。所有窗体的 Windows 标题栏都具有 bsSingle 边框样式。这种方法非常适合定位,但是我遇到的问题是当父窗体关闭而子窗体打开时出现明显的闪烁,并且由于有一小段时间没有打开窗体,所以开始栏上的图标/托盘会左右移动它本身变得隐藏和可见。

有人对解决这个问题有什么建议吗?我想也许如果我在应用程序中只有一个带有边框的表单并在这个边框内打开每个新表单,它会更好地工作 - 尽管我不确定如何准确地做到这一点。

任何帮助深表感谢。

4

2 回答 2

1

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

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

创建与此类似的两个子窗体,然后在要显示的一个上执行 Show 并在另一个上执行 Hide。在子窗体上将 BorderStyle 设置为 bsNone 以删除标题。如果您像这样自己创建表单,请在项目设置中关闭表单上的自动创建。

于 2012-01-04T21:17:52.117 回答
1

我在这个设计上取得了成功,我认为它也有助于在 TFrame 中包含“主窗体”的内容。当您想显示主窗体时,您只需执行帧交换。

于 2012-01-04T21:35:06.517 回答