Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Delphi或Java中保持窗口在顶部_Java_Delphi_User Interface - Fatal编程技术网

在Delphi或Java中保持窗口在顶部

在Delphi或Java中保持窗口在顶部,java,delphi,user-interface,Java,Delphi,User Interface,在Delphi中,是否可以将一个窗口置于所有其他窗口之上?例如,当您的应用程序中出现错误消息时,假设您希望将窗口保持在顶部,并确保用户必须先单击某个对象,然后才能执行其他操作。我真的是指任何事情,比如在后台点击另一个程序。用Java怎么样?不。微软的雷蒙德·陈(Raymond Chen)写了一篇关于为什么不这样做的文章。它的要点是,无论你多么努力地保持你的窗口在顶部,其他人总是可以来做同样的事情。不。微软的雷蒙德·陈(Raymond Chen)有一篇关于为什么不这样做的文章。它的要点是,无论你多

在Delphi中,是否可以将一个窗口置于所有其他窗口之上?例如,当您的应用程序中出现错误消息时,假设您希望将窗口保持在顶部,并确保用户必须先单击某个对象,然后才能执行其他操作。我真的是指任何事情,比如在后台点击另一个程序。用Java怎么样?

不。微软的雷蒙德·陈(Raymond Chen)写了一篇关于为什么不这样做的文章。它的要点是,无论你多么努力地保持你的窗口在顶部,其他人总是可以来做同样的事情。

不。微软的雷蒙德·陈(Raymond Chen)有一篇关于为什么不这样做的文章。它的要点是,无论你多么努力地把窗户放在上面,总有其他人会来做同样的事情。

在过去,你可以这样做。它被称为系统模式对话框,您使用了现已过时的
SetSysModalWindow()
函数


它们完全令人反感,因此当基于Windows NT的Windows版本接管时,感觉和秩序得以恢复。

在过去你可以这样做。它被称为系统模式对话框,您使用了现已过时的
SetSysModalWindow()
函数


它们完全令人反感,因此当基于Windows NT的Windows版本接管时,感觉和秩序得以恢复。

在Delphi中,您可以执行
FormStyle:=fsStayOnTop。这将把你放在所有普通窗口的前面

但是,如果有其他窗口也设置了这种样式(例如任务栏),那么这些窗口可能在您的前面。特别是在这些窗口中,具有焦点的窗口具有最高优先级

您可以尝试确保窗口始终具有焦点,但这很少是一个好主意。你会招致雷蒙德的幽灵


也可以使用分层窗口。我想这些都是在普通的顶部窗户前面。但这有严重的副作用,很可能不是您的正确选择。

在Delphi中,您可以执行
FormStyle:=fsstationtop。这将把你放在所有普通窗口的前面

但是,如果有其他窗口也设置了这种样式(例如任务栏),那么这些窗口可能在您的前面。特别是在这些窗口中,具有焦点的窗口具有最高优先级

您可以尝试确保窗口始终具有焦点,但这很少是一个好主意。你会招致雷蒙德的幽灵



也可以使用分层窗口。我想这些都是在普通的顶部窗户前面。但这有严重的副作用,很可能不是您的正确选择。

即使您可以,您的用户也会杀了您。@GameCat-请参阅我对Ken的回复。感谢所有精彩的回复!现在让我们忘记其他程序,它如何在同一个应用程序中工作?或者这也是一种糟糕的做法?如果你只关心自己的程序,你可以使用
showmodel
而不是
Show
。这仍然是一种糟糕的风格,但这只是因为它阻止了应用程序的其余部分,而这正是你想要的。即使你可以,你的用户也会杀了你。@GameCat-请参阅我对Ken的回复。感谢所有精彩的回复!现在让我们忘记其他程序,它如何在同一个应用程序中工作?或者这也是一种糟糕的做法?如果你只关心自己的程序,你可以使用
showmodel
而不是
Show
。这仍然是一种糟糕的风格,但这只是因为它会阻塞应用程序的其余部分,而这正是您想要的。OP说“就像在后台单击另一个程序”,所以fsStayOnTop无法完成它。事实上,这是毫无意义的,因为对话框可能是模态的(即应用模态),因此无论如何都在该应用程序窗口的顶部。如果另一个程序没有始终设置top,它会将OP的程序放在另一个程序的前面。@CodeInChaos,是的,但其他窗口仍然可以获得焦点。你可以通过抓取鼠标来做一些肮脏的把戏,但要准备好手电筒和干草叉。@CodeInChaos谁在上面并不重要,重要的是窗口是否可以接收输入。fsStayOnTop只控制你自己应用程序中的Z顺序。它与点击其他应用程序并将其向前推进的能力无关。OP说“就像在后台点击另一个程序”,所以fsStayOnTop无法完成它。事实上,这是毫无意义的,因为对话框可能是模态的(即应用模态),因此无论如何都在该应用程序窗口的顶部。如果另一个程序没有始终设置top,它会将OP的程序放在另一个程序的前面。@CodeInChaos,是的,但其他窗口仍然可以获得焦点。你可以通过抓取鼠标来做一些肮脏的把戏,但要准备好手电筒和干草叉。@CodeInChaos谁在上面并不重要,重要的是窗口是否可以接收输入。fsStayOnTop只控制你自己应用程序中的Z顺序。这与点击其他应用程序并将其向前推进的能力无关。答案很好,但有时客户有很好的想法,你需要满足他们……即使这是错误的@Radu Barbu:如果Windows不允许,不管客户是否想要,你都不能。从文章中:
这就像是说,“有时候我很匆忙,我想确定我是下一个在熟食店柜台上得到服务的人。为了做到这一点,我找到人数最少的人,把他们打昏,然后偷走他们的票。但有时也有人赶时间进来。那个人把我打晕,偷走了我的车票。我的计划是设置我的手表闹钟,定期叫醒我,每次它叫醒我时,我都会找到号码最少的人,把他们打昏,然后偷他们的票。有更好的方法吗?
我建议您在回答中直接添加一些信息,以防失去非现场资源。回答很好,但有时客户有很好的想法,您需要满足他们……即使是错误的!@R