Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 12:22   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Неглавная форма поверх всех окон

Всем привет! Раньше я как-то не обращал внимания на эту проблему, но теперь она меня достала.
Короче, не главным формам приложения пофигу, что в formStyle указано. Они всё равно не поверх всех. Как исправить?
Altera вне форума Ответить с цитированием
Старый 11.10.2009, 12:24   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
with form1 do
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
В таймере пробовал?
Ток на всех формах такое размести.
И, разумеется меняй "form1"
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 11.10.2009, 14:10   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Код:
with form1 do
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
В таймере пробовал?
Ток на всех формах такое размести.
И, разумеется меняй "form1"
Нее, эт что-то зверское.
Меня вообще очень смущает, что такой параметр как ПоверхВсехОкон выбирается как стиль формы, где настраиваются MIDI приложения. Это вообще должен был быть отдельный логический параметр.
Altera вне форума Ответить с цитированием
Старый 11.10.2009, 19:29   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
Смех

Цитата:
Сообщение от Altera Посмотреть сообщение
Всем привет! Раньше я как-то не обращал внимания на эту проблему, но теперь она меня достала.
Короче, не главным формам приложения пофигу, что в formStyle указано. Они всё равно не поверх всех. Как исправить?
- ваша проблема решаема. все дело в сообщениях формы...
добавьте в не главные формы-модули секцию protected
- procedure CreateParams(var Params:TCreateParams);override;
и в коде каждого вторичного модуля сие:
Код:
   
procedure Tform2.CreateParams; //form2 - условно вторичная форма
begin
 inherited;
 Params.WndParent:= form1.Handle //form1 - условно ваша главная форма
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.10.2009, 13:37   #5
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Спасибо raxp, помогло. А если ещё объясните почему помогло, то вообще хорошо будет!
Altera вне форума Ответить с цитированием
Старый 12.10.2009, 13:41   #6
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Да все просто!
От а процедура перехватывает параметры главного окна и приминяет их к своей!
uberchel вне форума Ответить с цитированием
Старый 12.10.2009, 13:42   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
Смех

parent великая хвещь
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 19:47   #8
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ок, а щас такой вопросег:
В приложении нет главных форм! Т.к. приложение работает в фоновом режиме и нельзя выделить какую нить форму как главную не могу. Так как мне тогда поступить, что-бы какое-то окно было поверх всех окон в системе?
Altera вне форума Ответить с цитированием
Старый 03.12.2009, 21:03   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

SetWindowPos(handle,HWND_TOPMOST,0, 0,0,0,SWP_NOSIZE or SWP_NOMOVE {чтоб двигать- другие флаги только}) или setforegroundwindow - играться пробовали? (дык без таймера никак, особенно если еще и поверх диспетчера нужно)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 03.12.2009 в 21:08.
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 21:17   #10
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
SetWindowPos(handle,HWND_TOPMOST,0, 0,0,0,SWP_NOSIZE or SWP_NOMOVE {чтоб двигать- другие флаги только}) или setforegroundwindow - играться пробовали? (дык без таймера никак, особенно если еще и поверх диспетчера нужно)
Мне не нужно ЖЕЛЕЗНО поверх ВСЕХ окон. Просто главная форма приложения при formStyle = fsStayOnTop работает так как надо. Но у меня в приложении нет главных форм. По этому форма, у которой formStyle = fsStayOnTop находиться по верх всех окон запущенного экземпляра приложения.
Приведу пример: плавающее окошко у Download Master-а. Оно явно не главное, но оно always on top. Ну у Download Master-а вероятно есть главное окно. А в моём случае http://programmersforum.ru/showpost....62&postcount=4 не подходит.
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма поверх всех окон LordTor Общие вопросы Delphi 5 18.11.2009 23:38
Как сделать так, чтобы форма была поверх всех окон? Jupiter Общие вопросы Delphi 9 31.07.2009 17:42
поверх всех окон Temka Общие вопросы Delphi 4 31.05.2009 14:09
Форма поверх всех окон (!!!) Viteef Общие вопросы Delphi 12 29.06.2007 00:22
Форма поверх всех окон. Kamikadze_666 Общие вопросы Delphi 1 16.05.2007 07:10