有3个FORM,FORM1一个按钮,点后FORM2.showmodal,Form2也有一个按钮,点后Form3.showmodal;
然后程序要最小化到托盘,这些窗体都hide了。
当然程序还原的时候就出问题了,我不知道form1,form2,form3之间的关系(整个程序有很多form,可能的showmodal顺序有很多种),哪个是最早出现的,哪个是最后出现的,按照Screen.Forms[i]的顺序进行设置.show:=true;如果刚好顺序是form1-form2-form3的顺序的话,没问题;但是如果顺序不一致,比如Screen.Forms[0]=form1;Screen.Forms[1]=form3;最后Screen.Forms[2]=form2,这时form2是最后设置show的,它就会在程序界面的最顶层,但是实际上form3是在form2上showmodal的,这个时候form3躲在背后了,不能操作,form2也不能操作,程序就假死了。请问高手,怎么判断form是不是从另外一个form里showmodal的?怎么判读是这个form从哪个form里面showmodal的?

解决方案 »

  1.   

    如果你在form1 实例中创建form2 Tform2.create(self(为self))则可以根据form2.owner  判断出是不是form1 
      

  2.   

    为什么不用插件呢   RzTrayIcon1.RestoreApp; 就OKl 
      

  3.   

    因为我的程序的图标不是自己的,我的程序是A,图标是程序B,还有另外一个程序C,通过程序B的图标管理程序A和C的掩藏显示。我用过COOLTrayIcon的hidemainform和showmainform,但是showmodal的窗口会躲在后面,顺序不正确。
      

  4.   

    因为我的程序的图标不是自己的,我的程序是A,图标是程序B,还有另外一个程序C,通过程序B的图标管理程序A和C的掩藏显示。 
    ----------   理解下,你是不是在说窗体A,窗体B,窗体C,不是工程意思吧
      

  5.   

    判断OWNER是一个思路,可以考虑
      

  6.   


    不是的,是三个EXE程序。
      

  7.   

    我帖子提到的FORM1,FORM2,FORM3都是程序A的窗体
      

  8.   

    你一程序里根本不会同时启动大于1个的showmodal窗体的。晕!
      

  9.   


    ?怎么不可能?FORM2在FORM1的界面上SHOWMODAL,FORM3又在FORM2的界面上SHOWMODAL,怎么会不可能?