最近刚学到MDI窗体,在练习过程中,遇到如下问题:
假设form1是MDI主窗体,form2,form3是子窗体,在主窗体的一个按钮事件中调用子窗体并显示:如下代码
form3:=tform3.create(self);
form3.show;
但在运行时发现,form3总是先显示一个小窗口,然后才最大化(在设计阶段已经将窗体设置为运行时最大化),即速度很慢。怎样才能点一下按钮,窗体马上就显示出来呢?
解决后马上给分。

解决方案 »

  1.   

    if not assigned(form) then
        form3:=TForm3.create(Application)
    From3.show;
    慢,是不是你在窗体初始化的时候写的代码多了呀?一般一闪就过去了啊?
      

  2.   

    查一下的窗体的windowstate属性是否是msnormal.
      

  3.   

    直接在按钮事件里面用
    form1.close;
    form3.show;
    不是很好吗?
      

  4.   

    用一个lockwindows的API吧,先lock,再unlock就好
      

  5.   

    谢谢大家,问题还是没有解决,我看到有的程序显示几个子窗体和显示一个窗体上的几个panel组件一样快,我的练习例子中有两个子窗体,在主窗体上有两个按钮,按一个按钮时将一个窗体关闭,另一个显示。我参考的程序是magictweak,大家看一下,有什么好办法。分不够可以再加。
      

  6.   

    用这样的语句:
    Application.CreateForm(TForm1,Form1);
    Form1.show;
      

  7.   

    Application.CreateForm(TForm1,Form1);
    Form1.show;

    form3:=tform3.create(self);
    form3.show;

    form3:=tform3.create(application);
    form3.show;
    有什么区别呀?但效果我发现都一样
      

  8.   

    在form3.show前加form3.WindowState := wsMaxizied;
    再在form3.show后加form3.Update;