在一工程中,我有A,B,C三个窗口,A为主窗口,我想通过A窗口进入后,显示B,C窗口,并且使B窗口始终在前端。
    我把B窗口的FormStyle属性改为fsStayOnTop.但是有一个难的现在,当我在工具档只有这个程序运行时。我按下ALT+Tab,C窗口就跑到B窗口前去了,也就是B窗口的前端显示就没了。
     求助高手帮忙呀。
     小弟十分感激!!

解决方案 »

  1.   

       首先,我要对1,2,3楼的yq3woaini,SmallHand,xzl_kye道歉,是我没说清问题。然后我的想法是,“在一工程中,……,并且使B窗口始终在前端。 同时,我又能操作C窗口。”如果用了showmodel的话,就不能操作C窗口了。   还请各位侠士热心帮助呀。
      

  2.   

    SetWindowPos后,当只有此Delphi程序一个任务时,按下Alt+Tab,B就不在最前了,SetWindowPos与fsstayontop一样,不好使。
      

  3.   

    这样的话,你可以把form2,form3放到panel里
      

  4.   

    FormB := TFormB.CreateParented(FormC.Handle);
    FormB.Show;
    //使得Form1处于激活状态
    SendMessage(FormB.Handle, WM_NCACTIVATE, Ord(True), 0);
      

  5.   

    把B嵌入C。
    否则就算实现了你的要求,B挡着C,用户还在操作C,那叫怎么回事。
      

  6.   

    考虑用分页处理用(DOCK窗体停靠),设置当前页是B,可能要设置激活B的处理
      

  7.   

    1、使用模式窗体可以实现,但这样你就没有办法操作C窗体了
    2、使用API函数:SetWindowPos可以实现,建议你使用这个方法。
      

  8.   

        创新是进步的重大力量。9楼所说的“FormB := TFormB.CreateParented(FormC.Handle); ”,有创意,我试了,完全能满足我之前提的需求!
         哈哈,我之前想到像QQ那样,隐藏任务栏,可是项目中的老大说了,任务栏不能隐藏!所以,9楼所说的办法才真正解决了我在一个项目中的难题,谢谢!
        9楼“ok1411”拿分!