如何向MDIChild窗体的formshow事件传入参数?
如何向MDIChild窗体的formshow事件传入参数?
创建MDIChild窗体时,程序会自动运行MDIChild窗体的formshow事件
而此时,给MDIChild窗体的参数赋值的语句还未执行,这样的话,就导致了formshow事件中调用参数无效了。
- Delphi(Pascal) code
//主窗体代码procedure btn1.onclick(sender:tobject);begin if form2=nil then form2:=TForm2.create(self); if assigned(form2) then begin form2.strTitle:='测试'; form2.show; end;end;//子窗体代码procedure TForm2.onshow(sender:tobject);begin lblTitle.caption:=strTitle;end;
问题是
在执行form2.strTitle:='测试';的时候,其实已经执行了form2.show了,所以参数没有被传入。
[解决办法]
TForm2中添加一个public方法和相关属性,创建TForm2时,在form2.Show之前,先执行form2.xxxx方法,传进参数,这样onshow时,就可以访问这些属性了
[解决办法]
直接用form2.caption,或者在Form2中增加一个函数
Create后,就调用此函数并传入参数,在这个函数内做配置动作
另外,MDIChild在create后会自己显示出来,不用另外show;
[解决办法]
[解决办法]
[解决办法]
[解决办法]
[解决办法]
设置“全局变量”传递值即可
[解决办法]
看下你写的代码:
- Delphi(Pascal) code
procedure btn1.onclick(sender:tobject);begin//如果没有创建,则创建,这里会form2.FormCreate等 if form2=nil then form2:=TForm2.create(self); //已经创建,赋值显示,如果申明的是公共的应该是可以赋值 if assigned(form2) then begin form2.strTitle:='测试'; form2.show; end;end
[解决办法]
动态创建窗体吗