现有mainForm(主窗口),内有spanel控件
form1   form2  两个子窗口要求是,通过事件触发在主窗体spanel控件内 加载form1、2窗口。现在加载是没问题了,但是加载第二个窗体时,第一个不消失。就成了重合或者叠加,反正是乱了。怎么样加载一个窗体前,让前一个窗体消失。

解决方案 »

  1.   

    用全局变量formname记录当前加载子窗体的名称
    在加载窗体时,用
    (Application.FindComponent(formname) as TForm).Close;将加载的窗体关闭
      

  2.   

    用全局变量formname记录当前加载子窗体的名称
    在加载窗体时,用
    (Application.FindComponent(formname) as TForm).Close;将加载的窗体关闭
      

  3.   

    1. 使用窗口的SendToBack、BringToFront方式
       for I := 0 to Screen.FormCount - 1 do
           if Screen.Forms[I].ClassName <> AClassName then    //不想显示的窗口类名
                Screen.Forms[I].SendToBack
    2. 通过Screen对象遍历所有打开的窗口留下需要显示的窗口,把不需要显示的窗口的 visible 设置成False            
      

  4.   

    你怎么加载的?
    form1.name就是加载窗体的名称
      

  5.   

    lovelymelon顺着你的思路 还有一个问题我自定义了一个过程,onlyOneform(var oldform:shortstring),里面是相关的处理过程。
    我通过事件的触发,将form.name传递给过程。但是我想在过程中关闭此窗口,如何做?我直接用
    oldform.close提示类型报错,怎么声明呢?
      

  6.   

    用这个关闭窗口(Application.FindComponent(oldform) as TForm).Close;