德尔福 - 形式内的形式

Maw*_*awg 9 delphi vcl c++builder

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

-----------------------------
| main form component 1     |
-----------------------------
| main |  the 'embedded'    |  
| form |  form goes here    |
|comp 2|                    |
-----------------------------
Run Code Online (Sandbox Code Playgroud)

我能这样做吗?如果是这样的话?


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

Nat*_*Nat 22

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

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

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

end;
Run Code Online (Sandbox Code Playgroud)

编辑:

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

  LForm.Caption := '';
  LForm.BorderStyle := bsNone;
Run Code Online (Sandbox Code Playgroud)

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

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

N - [

  • @Nat:.Parent采用TWinControl,而不是WindowHandle.我冒昧地修改你的代码. (2认同)

Uli*_*rdt 12

你可以使用一个框架.