XE2+Win7,模态窗口为什么不显示?

hongss 2015-12-02 10:09:03
编译环境:XE2 + Win7
使用模态窗口
比如:
void __fastcall TForm_Main::Btn_PosCtrlClick(TObject *Sender)
{
Form_PosCtrl = new TForm_PosCtrl(this);
Form_PosCtrl->ShowModal();

delete Form_PosCtrl;
}


在实际使用中,会出现点击该Btn_PosCtrl按钮后,程序死机。
后经检查发现,并不是死机,而是Form_PosCtrl窗体生成并显示了,但他显示在Form_Main的后方,造成了主界面卡死。

这是什么原因?

如果改用 XE2 + XP 该现象不会出现。
或者,不使用模态窗口,在Project中一次生成,这里直接Show,也不会出现这种情况。

搞不明白为什么会出现这种情况……

请大牛们解释一下,谢谢。
...全文
181 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongss 2015-12-07
  • 打赏
  • 举报
回复
引用 9 楼 sirit 的回复:
我用BCB2010和win7,没有这个问题。
其实,我自己在笔记本上编程,用 XE2 + Win7 ,也没出现过这个情况。 但是给客户装的工控机上安装Win7系统,然后把我的程序安装上去,就会出现这样的情况,而且不是一台两台这样,出现很多次了。搞得我们只好给客户改用XP系统,然后安装我们的程序上去。
hongss 2015-12-07
  • 打赏
  • 举报
回复
引用 8 楼 ccrun 的回复:
一般情况下模态窗口被隐藏在其他窗口后面,是窗口的Z-Order问题,你可以这样写:
void __fastcall TForm_Main::Btn_PosCtrlClick(TObject *Sender)
{
    TFormStyle fs = FormStyle;
    FormStyle = fsNormal;

    Form_PosCtrl = new TForm_PosCtrl(this);
    Form_PosCtrl->ShowModal(); 
    delete Form_PosCtrl;

    FormStyle = fs;
}
好的,我去试试看。
hongss 2015-12-07
  • 打赏
  • 举报
回复
引用 6 楼 ksrsoft 的回复:
this 》Application 试试
Form_PosCtrl = new TForm_PosCtrl(Application);
     Form_PosCtrl->ShowModal();
    delete 
为什么用 this 不行呢?这两个有什么区别么?
麻酱面条 2015-12-06
  • 打赏
  • 举报
回复
我用BCB2010和win7,没有这个问题。
ccrun.com 2015-12-03
  • 打赏
  • 举报
回复
一般情况下模态窗口被隐藏在其他窗口后面,是窗口的Z-Order问题,你可以这样写:
void __fastcall TForm_Main::Btn_PosCtrlClick(TObject *Sender)
{
    TFormStyle fs = FormStyle;
    FormStyle = fsNormal;

    Form_PosCtrl = new TForm_PosCtrl(this);
    Form_PosCtrl->ShowModal(); 
    delete Form_PosCtrl;

    FormStyle = fs;
}
缘中人 2015-12-03
  • 打赏
  • 举报
回复
改成NULL 也可以试试
hongss 2015-12-03
  • 打赏
  • 举报
回复
我更换了Win7的版本,问题依旧~~~
缘中人 2015-12-03
  • 打赏
  • 举报
回复
this 》Application 试试
Form_PosCtrl = new TForm_PosCtrl(Application);
     Form_PosCtrl->ShowModal();
    delete 
hongss 2015-12-03
  • 打赏
  • 举报
回复
引用 1 楼 ksrsoft 的回复:
Form_Main的FormStyle属性是不是fsStayOnTop
不是啊, 属性是 fsNormal 这个我没变过。 我只是改变了窗口属性 BorderStyle 设置为 bsNone
hongss 2015-12-03
  • 打赏
  • 举报
回复
引用 2 楼 songhtao 的回复:
用alt + tab切换一下
切换不了。。。这是程序里的界面,不是Windows的窗口之间的切换~~
我不懂电脑 2015-12-02
  • 打赏
  • 举报
回复
用alt + tab切换一下
缘中人 2015-12-02
  • 打赏
  • 举报
回复
Form_Main的FormStyle属性是不是fsStayOnTop

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧