![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Всегда поверх остальных [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, оказывается за формой и ничего дальше сделать невозможно. Так же окно не малых размеров, что затрудняет работу с другими приложениями.
Заранее спасибо. :)