出于审美原因,我想在另一个表单的顶部显示一个表单,就好像它是一个组件,就像TPanel一样。它应该与父级一起调整大小,随着标题栏的标记栏等等而移动。
-----------------------------
| main form component 1 |
-----------------------------
| main | the 'embedded' |
| form | form goes here |
|comp 2| |
-----------------------------
我能这样做吗?如果是这样的话?
我现在倾向于MDI ......
答案 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支持。