在主Form的FormCreate函数中加入:
var
 my:TForm2;
begin
 my:=TForm2.Create(Form2);
 my.Show;
 my.Update;
 sleep(10000);
 //my.Release;
 my.Close;
 messagebox(self.Handle,'111','222',MB_OK);
end;
其中form2是一个类似欢迎窗口。
这段代码在2000下没有问题。
在XP下,如果在form2启动的时候,切换窗口到其他窗口,然后再切换回来,就会发现,提示框“111”已经打出来了,但是form2还没有关闭。
如果用release,就能关闭,但是我希望用close,因为form2我今后将多次用到,我只想创建一次,不想多次(>100)创建。
form2的formstyle是fsstatyontop。

解决方案 »

  1.   

    my:=TForm2.Create(Form2);
    owner怎么是自己?
      

  2.   

    lll当然出来了my.Showmodal
    update干码?
    还sleep
    dao
      

  3.   

    哦,我解释一下,sleep语句只是让我有时间切换窗口。(这个程序是我的测试程序)
    另外,我需要用show,因为真正的应用中,当我show以后,程序开始做某一个操作,直到操作完成,才close,相当于一个等待窗口。
      

  4.   

    其实我就想知道,为什么都close了,还在界面上看得到?好像没有真正close掉,而且只有在WINXP下有这个问题
      

  5.   

    那你试试Form2.Hide吧,我这里也没有XP,不能帮你试.
      

  6.   

    反正如果各位手头上有winxp,那么可以试试我说的现象。我在线等着你们的好消息。多谢多谢!
      

  7.   

    对了,还忘了说,在XP下,如果通过工程运行,就没有问题,只有直接运行*.exe,才可能出问题。另外,不一定切换窗口,就连移动窗口或者使form2窗口处于没有选中状态,也出有上述问题。
      

  8.   

    在Form2的OnClose里面写
    Action := caHide;
    试试看