Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как заставить окно оставаться всегда поверх всех других окон [D7, WinXP]


Dront ©   (2006-10-12 11:14:00) 

Из программы оповещений свёрнутой в трей в нужный момент хочу показать окно ( не главную форму приложения ) со срочной информацией. Для этого:

frmMailNotify := TfrmMailNotify.Create(Application);
...
SetForegroundWindow(frmMailNotify.Handle);

Этого оказывается недостаточно - пользователи иногда "теряют" это окно. Надо бы, как в Windows Task manager-e. Пожалуйста, посоветуйте решение.


Ketmar   (2006-10-12 17:02:00) [1]

я намекал, что это свойство никто форме и не ставит. ставят флажок окна, начисто игнорируя свойство. потому оно и не появляется (что не мешает окну иметь флажок).


Dront   (2006-10-12 16:58:00) [2]

Вы совершенно правы! Форма не получает свойства fsStayOnTop.
Спасибо за уточнение. И за совет тоже спасибо. Я думаю, что у меня Ваш вариант не работает из-за конфликта с "механикой" помещения приложения в трей. Я понимаю, что "сдуру" таких вполне конкретных рекомендаций не дают.


Ketmar   (2006-10-12 16:26:00) [3]

>[8] Dront(c) 12-Oct-2006, 16:25
>Окно не получает свойства fsStayOnTop
и не должно. потому что у окнатакого свойства нет. есть только у формы. %-)


Dront   (2006-10-12 16:25:00) [4]

Окно не получает свойства fsStayOnTop


Орион   (2006-10-12 16:22:00) [5]

> Вариант Ориона у меня не работает

о.О как именно?


Dront   (2006-10-12 15:55:00) [6]

Большое спасибо за помощь. Сделал, как предложил Leonid Troyanovsky

          Application.NormalizeTopMosts;
          frmMailNotify.FormStyle := fsStayOnTop;
          frmMailNotify.ShowModal;                  
          Application.RestoreTopMosts;

Вариант Ориона у меня не работает


Орион   (2006-10-12 15:26:00) [7]

type
 TfrmMyForm = class(TForm)
   ...
 protected
   procedure CreateParams(var Params: TCreateParams); override;
 private
    ...
 public
   ...
 end;

procedure TfrmMyForm.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.ExStyle:=Params.ExStyle or WS_EX_TOPMOST;
end;


Leonid Troyanovsky   (2006-10-12 13:53:00) [8]


> Dront ©   (12.10.06 12:08) [2]

> Да стоит FormStyle = fsStayOnTop, но моё окно - "не главная


http://www.rsdn.ru/Forum/?mid=466741

--
Regards, LVT.


@!!ex   (2006-10-12 12:45:00) [9]

?Баг? XP.
Иногда СтэйОнТоповые приложения падают вниз.
Фиг знает почему, так и не смог от этого избавиться.


Dront   (2006-10-12 12:08:00) [10]

Да стоит FormStyle = fsStayOnTop, но моё окно - "не главная форма приложения", а здесь это не помогает


clickmaker   (2006-10-12 12:05:00) [11]

FormStyle = fsStayOnTop


Наверх

Титульная страница Поиск, карта сайта Написать письмо