Держите окно сверху в Delphi или Java - PullRequest
0 голосов
/ 24 марта 2011

Возможно ли в Delphi держать окно поверх всех остальных окон? Например, если у вас есть сообщение об ошибке в вашем приложении, допустим, вы хотите оставить окно сверху и убедиться, что пользователь должен щелкнуть что-то, прежде чем он сможет сделать что-то еще. И я действительно имею в виду что-нибудь, например, щелчок другой программы в фоновом режиме. А как на счет Java?

Ответы [ 3 ]

6 голосов
/ 24 марта 2011

Нет. У Раймонда Чена из Microsoft есть отличная статья о том, почему бы не здесь . Суть в том, что как бы вы ни старались держать свое окно сверху, кто-то другой всегда может прийти и сделать то же самое.

0 голосов
/ 24 марта 2011

В Delphi вы можете сделать FormStyle:=fsStayOnTop;.Это поставит вас перед всеми обычными окнами.

Но если есть другие окна, у которых тоже установлен этот стиль (например, панель задач), они могут быть перед вашими.В частности, среди этих окон приоритет имеет то, которое имеет фокус.

Вы можете убедиться, что у вашего окна всегда есть фокус, но это редко хорошая идея.И вы навлечете на себя призрак Рэймонда.

Вы также можете использовать многослойное окно.Я думаю, что они перед нормальными окнами всегда на вершине.Но это имеет серьезные побочные эффекты и, скорее всего, не является правильным выбором для вас.

0 голосов
/ 24 марта 2011

Вы могли бы сделать это в старые времена.Он назывался системным модальным диалоговым окном, и вы использовали устаревшую функцию SetSysModalWindow().

Они были крайне отвратительны, и поэтому смысл и порядок были восстановлены после прихода к власти версий Windows для Windows NT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...