首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi - form中的form

Delphi - form中的form
EN

Stack Overflow用户
提问于 2010-03-19 15:10:43
回答 3查看 6.7K关注 0票数 10

出于美学原因,我希望将一个窗体显示在另一个窗体的顶部,就像它是一个组件一样,比如TPanel。它应该与父级一起调整大小,当父级被其标题栏拖动时移动,等等。

代码语言:javascript
复制
-----------------------------
| main form component 1     |
-----------------------------
| main |  the 'embedded'    |  
| form |  form goes here    |
|comp 2|                    |
-----------------------------

我可以这样做吗?如果是这样的话,是怎么做的?

我现在倾向于MDI。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-19 16:15:40

在设计时将一个面板放在您希望嵌入窗体的位置。在运行时,创建窗体,然后将嵌入窗体的Parent属性设置为面板。

代码语言:javascript
复制
procedure TParentForm.FormCreate(ASender: TObject);
begin
  FEmbeddedForm := TEmbeddedForm.Create(self);

  FEmbeddedForm.Parent := Panel1;
  FEmbeddedForm.Align := alClient;
  FEmbeddedForm.Visible := True;

end;

编辑:

如果要停止显示窗口标题和边框,请将此代码添加到FormCreate()的底部

代码语言:javascript
复制
  LForm.Caption := '';
  LForm.BorderStyle := bsNone;

顺便说一句,我并不是在提倡使用父母形式而不是框架,只是回答了这个问题。框架很棒(我一直在使用它们),但它们与表单并不完全相同。它们几乎完全像一个带有控件的面板。

例如,一个框架既没有OnCreate事件,也没有OnShow事件,当您重用它们并需要这种行为时,这有时可能会很痛苦。

N@

票数 23
EN

Stack Overflow用户

发布于 2010-03-19 15:19:38

你可以使用frame

票数 14
EN

Stack Overflow用户

发布于 2010-03-20 05:23:38

原生win32 MDI被认为是“过时的”。我想你可能在找像绝地武士JvDocking图书馆那样的东西。我使用它来模拟MDI,但没有使用win32的MDI支持。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2475540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档