[英]TMainMenu in Delphi
我的申请中有两种不同的形式。 我创建了另一个空窗体,并在其上放置了一个TMainMenu组件和两个菜单项。 此新表单将用作加载其他所有内容的主要表单。 现在,我希望它像这样工作:当您单击两个菜单项中的任何一个时,它应将与之关联的菜单项的各自表单的内容加载到主表单中。 我该如何实现? 或解决此类问题的典型方法是什么? 请提供一个简单的说明性示例。
如果要在主窗体中嵌入其他窗体,请在主窗体的alclient属性中添加一个tpanel。 单击时,fromxxx.parent设置为您的面板名称。
这是示例代码
begin
if Dm.TblUser.Active=False then
Dm.TblUser.Active := True;
if FrmPUserG=nil then
FrmPUserG := TFrmPUserG.Create(Self);
FrmpUserG.Parent := PnLContainer;
FrmpUserG.Align := alClient;
FrmpUserG.BorderStyle := bsNone;
FrmpUserG.Visible := True;
FrmpUserG.BringToFront;
end;
在MainForm
上创建一个TPanel
并设置其Align := alClient
, BevelOuter := bvNone
。 还给MainForm
属性Form1: TForm1
和Form2: TForm2
。 然后以这种方式显示Form1
或Form2
:
显示Form1
:
if not Assigned(MainForm.Form1) then
MainForm.Form1 := TForm1.Create(MainForm);
MainForm.Form1.Parent := MainForm.Panel1;
MainForm.Form1.Align := alClient;
MainForm.Form1.BorderStyle := bsNone;
MainForm.Form1.Visible := True;
if Assigned(MainForm.Form2) then
MainForm.Form2.Visible := False;
当然,您不需要编写MainForm
; 只是为了阐明示例。
如果您已经创建了一堆Forms,并且想要添加显示“停靠”的功能,则可以将继承更改为新模板,而不是TFrom。
通过添加并重载构造函数,您将能够照常使用或“停靠”它们。
要更改继承,只需替换
type
TYourForm = class(TForm)
同
type
TYourForm = class(TTemplate)
并用inherited
DMF替换object
{
public
Constructor Create(AOwner:TComponent;AParent:TWinControl=nil);Overload;
.....
}
constructor TTemplate.Create(AOwner: TComponent; AParent: TWinControl);
begin
inherited Create(AOwner);
if Assigned(AParent) then
begin
BorderStyle := bsNone;
Parent := AParent;
Align := alClient;
end;
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.