出于美学原因,我希望将一个窗体显示在另一个窗体的顶部,就像它是一个组件一样,比如TPanel。它应该与父级一起调整大小,当父级被其标题栏拖动时移动,等等。
-----------------------------
| main form component 1 |
-----------------------------
| main | the 'embedded' |
| form | form goes here |
|comp 2| |
-----------------------------我可以这样做吗?如果是这样的话,是怎么做的?
我现在倾向于MDI。
发布于 2010-03-19 16:15:40
在设计时将一个面板放在您希望嵌入窗体的位置。在运行时,创建窗体,然后将嵌入窗体的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;顺便说一句,我并不是在提倡使用父母形式而不是框架,只是回答了这个问题。框架很棒(我一直在使用它们),但它们与表单并不完全相同。它们几乎完全像一个带有控件的面板。
例如,一个框架既没有OnCreate事件,也没有OnShow事件,当您重用它们并需要这种行为时,这有时可能会很痛苦。
N@
发布于 2010-03-19 15:19:38
你可以使用frame。
发布于 2010-03-20 05:23:38
原生win32 MDI被认为是“过时的”。我想你可能在找像绝地武士JvDocking图书馆那样的东西。我使用它来模拟MDI,但没有使用win32的MDI支持。
https://stackoverflow.com/questions/2475540
复制相似问题