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

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

Всегда поверх остальных [D7, XP]


NoSilence ©   (2010-09-03 16:49:00) 

Суть: в моем проекте есть главная форма, у которой FormStyle = fsNormal. Так же имеются другие формы, некоторые с FormStyle = fsStayOnTop. Проблема в, том что главная форма всегдаповерх остальных окон. Даже если другие отображаются с .ShowModal;

Как уже пытался лечить: искал в Forms.pas строчки "HWND_TOP", "HWND_TOPMOST" и "SetForegraundWindow". Все эти сделал комментариями. Как следствие, окна с FormStyle = fsStayOnTop перестали быть поверх всех, но главная форма так и осталась.
Так же пытался убрать в всех форм стиль fsStayOnTop - 0 эмоций. Пытался по событии создания формы делать SetWindowLong ... без параметра topmost, опять же безрезультатно.


NoSilence   (2010-09-04 13:39:00) [1]

Причиной была функция:

procedure TNEvent.ChangPosition(var Msg: TWMWindowPosChanging);
begin
SetWindowPos(MahaonForm.ActiveForm, 0,
 Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;


вместо нуля там было HWND_TOPMOST
не знал, что это сообщение обрабатывается постоянно. думал, что вызывается только при:
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);


NoSilence   (2010-09-03 17:16:00) [2]

Может быть и такое, что кто-то не понял сути вопроса.

Как ее сделать нормальной?
Потому что окно настроек, открывающееся с .showmodal, оказывается за формой и ничего дальше сделать невозможно. Так же окно не малых размеров, что затрудняет работу с другими приложениями.

Заранее спасибо. :)


Наверх

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