在运行时间长的代码时,通常用‘showmessage('执行完毕')’,来显示已经执行完,但如果在运行过程中点击了其它地方,程序运行完毕后showmessage框就跑到后面去了,有没有办法将showmessage始终置前。

解决方案 »

  1.   


    那你弄个from 代替showmessage框体的提示功能 程序运行完毕的时候把这个from创建并ShowModal一下  这个窗体应该是始终直前的 呵呵
      

  2.   

    点击其他地方,还是在你自己的程序其他地方点击,还是说点击你的程序以外的地方。
    前一种情况应该不会出现你说的问题。
    后一种情况的话,可以考虑自己用个Form代替ShowMessage(),将这个窗体始终置前就可以了。
    Form1.Formstyle   :=   fsStayOnTop 
    或是
    setwindowpos(form1.Handle,hwnd_topmost,0,0,0,0,swp_nomove   or   swp_nosize);
      

  3.   

    Application.MessageBox('没有任何数据可以保存!','提示',
                            MB_OK+MB_ICONINFORMATION+MB_APPLMODAL);
      

  4.   

    实用API函数MessageBox可以实现它是模式窗体,一直置顶的。
      

  5.   

    显示SHOMWMESSAGE(最好用MESSAGEBOX)的Form设为showmodal, 这样就点不到其它地方了.
      

  6.   

    自己做个好看点的对话框showModal也不错啊,或者用MessageBox。
      

  7.   

    showmessage好像我也遇到过这个情况,没有理会
      

  8.   

    用MESSAGEBOX要用HANDLE,麻烦,如果不是本窗体的,还是可以点击后面的窗体的,所以唯一解决方法是:    Application.MessageBox(PChar(AText), '信息提示', MB_OK + MB_ICONINFORMATION +  MB_DEFBUTTON2 + MB_TOPMOST);
      

  9.   

    这个问题应该算是showmessage的bug吧,一直也不见改进
      

  10.   

    自己做个message窗体, 属性设为Ontop
      

  11.   

    除了调试,基本不用Showmessage
      

  12.   

    用 MessageBox(Handle, PChar(StrError), '提示', MB_OK + MB_ICONQUESTION)这样就不会跑后面了
      

  13.   

    无人看守的情况下,还是用memo显示,并写入LOG 日志文件吧,谁没事盯着系统点对话框
      

  14.   

    Form1.Formstyle := fsStayOnTop  
      

  15.   

    Application.MessageBox(PAnsiChar('Welcome'),'北京欢迎你',MB_OK + MB_ICONINFORMATION + MB_SYSTEMMODAL);
    这个完全OK 。
      

  16.   

    Application.MessageBox(PChar('执行完毕'),'提示',MB_OK+MB_ICONINFORMATION+MB_Topmost);