Delphi动态加载子窗体名到MainMemu进行窗体切换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi动态加载子窗体名到MainMemu进行窗体切换相关的知识,希望对你有一定的参考价值。

每打开一个MDI窗体,就把它名字记录到MainMemu上面,然后可以通过点击MainMemu来进行窗体切换

每打开一个MD窗体的时候,将窗体名记录到ini或者数据库配置文件(如果以后总是要加到MainMemu上的话),如果是一次性的,当这次软件运行时,打开的窗体记录到MainMemu的话,可以直接通过动态创建。

针对方法1: 将窗体名,窗体类名,记录到配置文件,然后对MainMemu根据ini中的参数数量动态创建,具体如何使用窗体名和窗体类名创建窗体的话,可以百度。我以前写过这样的。

针对方法2:直接可以写个方法。首先打开窗体后,MainMemu动态创建一个按钮,这个应该不需要我说把?算了 我写行代码给你把。

procedure TForm2.FormShow(Sender: TObject);
var
menus:TMenuItem;
i:integer;
ifCreate:Boolean;
begin
ifCreate:=True; //定义个布尔变量判断是否已经创建的了按钮
For i:=0 to Form1.N1.Count-1 do //对N1按钮下面的子按钮进行一次循环,判断该窗体按钮是否已创建
begin
if Form1.N1.Items[i].Caption='Form2' then //如果已经创建,这ifCreate为False
begin
ifCreate:=False;
end;
end;
if ifCreate then //判断ifCreate是否为False如果为False则不创建按钮。
begin
menus:=TMenuItem.Create(Form1.MainMenu1); //先创建一个按钮,
Form1.N1.Add(menus); //将该按钮添加到N1按钮下。
menus.Caption:='Form2'; //对按钮名字定义。
menus.OnClick:=menusClick; //将点击事件附加给按钮
end;
end;

procedure TForm2.menusClick(Sender: TObject); //按钮点击事件,记得前面声明
begin
Form2.ShowModal;
end;

这只是针对普通的Form1和Form2 MDI窗体也是类似的。

如满意请采纳,如有问题请追问。
参考技术A 很容易呀~你切换的代码那里加上一行记录写到配置文件里,然后mainmenu去读配置文件就行了。

以上是关于Delphi动态加载子窗体名到MainMemu进行窗体切换的主要内容,如果未能解决你的问题,请参考以下文章

C# winform加载子窗体很慢 如何用进度条显示

求教 C#窗体中动态添加了Panel,再如何动态的在Panel中添加文本框控件呢?

ext-4.2.1.883 页面加载子页面

PostMessager来对子父窗体进行跨域

markdown 动态加载子组件功能于反应

Vue 动态加载子组件