繁体   English   中英

TMainMenu在Delphi中

[英]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 := alClientBevelOuter := bvNone 还给MainForm属性Form1: TForm1Form2: TForm2 然后以这种方式显示Form1Form2

显示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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM