Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.04.2015, 17:24
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию StayOnTop дополнительного окна

Дополнительное (неглавное) окно (или несколько) создается динмически. Задача - свернуть главное окно так, чтобы дополнительное не сворачивалось и было StayOnTop. Или, как вариант, дополнительное окно поверх всех, но при его активации главное окно не перекрывало другие программы (окна).

Последний раз редактировалось Помидоркин, 30.04.2015 в 17:31.
Ответить с цитированием
  #2  
Старый 30.04.2015, 18:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Создавай с родителем Desktop.
Вот пример окна нотификации из одного моего проекта (код не полностью, только создание):
Код:
procedure TCustomNotificationForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle Or WS_EX_TOPMOST Or WS_EX_TOOLWINDOW And (Not WS_EX_APPWINDOW);
  Params.WndParent := GetDesktopWindow;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Помидоркин (01.05.2015)
  #3  
Старый 01.05.2015, 14:27
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию

Класс!!! То что доктор прописал.
Правда я ничего не понял, тупо списал. Надеюсь - со временем разберусь.
Ответить с цитированием
  #4  
Старый 01.05.2015, 19:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В декларации в классе не забудь override поставить.
Суть этого прикола в том, что в момент создания окна (окна еще нет, только идет подготовка к его созданию), меняются некоторые параметры, с которыми окно должно быть создано. Теоретически, можно поменять эти параметры у уже созданного окна (через SetWindowLong), но не для всех это срабатывает. Например, не работает нормально для родителя (последняя строчка).
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Помидоркин (04.05.2015)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter