德尔福 - 形式内的形式

时间:2010-03-19 07:10:43

标签: delphi c++builder vcl

出于审美原因,我想在另一个表单的顶部显示一个表单,就好像它是一个组件,就像TPanel一样。它应该与父级一起调整大小,随着标题栏的标记栏等等而移动。

-----------------------------
| main form component 1     |
-----------------------------
| main |  the 'embedded'    |  
| form |  form goes here    |
|comp 2|                    |
-----------------------------
我能这样做吗?如果是这样的话?


我现在倾向于MDI ......

3 个答案:

答案 0 :(得分:21)

将面板放在您希望嵌入式表单处于设计时的位置。在运行时,创建表单,然后将嵌入表单的Parent属性设置为面板。

procedure TParentForm.FormCreate(ASender: TObject);
begin
  FEmbeddedForm := TEmbeddedForm.Create(self);

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

end;

修改

如果要停止显示窗口标题和边框,请将其添加到FormCreate()

的底部
  LForm.Caption := '';
  LForm.BorderStyle := bsNone;
顺便说一句,我不是主张在框架上使用父级表格,只是回答这个问题。框架很棒(我一直使用它们),但它们与Forms完全相同。它们几乎就像一个带有控件的面板。

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

N - [

答案 1 :(得分:11)

您可以使用frame

答案 2 :(得分:2)

原生win32 MDI被视为“过时”。我想你可能正在寻找像JEDI JvDocking库这样的东西。我使用它来模拟MDI但不使用win32 MDI支持。