3SCrack
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору dzh2000 Если не трудно глянь, если найдешь, кинь на профильное мыло ALL Может кто сталкивался... Имеется главная форма (MainForm), для предания ей статуса TOPMOST (поверх всех окон) использую функцию... (FormStyle:=fsStayOnTop еще глючнее ) Код: procedure TMainForm.FormCreate(Sender: TObject); begin SetWindowPos(MainForm.Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOCOPYBITS or SWP_NOMOVE or SWP_NOSIZE); end; | И все было бы хорошо, если бы мне не нужно было вызвать диалоговое окно. Вызываю его кнопкой Button1... Код: procedure TMainForm.Button1Click(Sender: TObject); var Dialog1: TDialog1; begin Dialog1:=TDialog1.Create(Application); Dialog1.ShowMOdal; Dialog1.free; end; | В TDialog1 также прописано TOPMOST при создании... Код: procedure TDialog1.FormCreate(Sender: TObject); begin SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOCOPYBITS or SWP_NOMOVE or SWP_NOSIZE); end; | В TDialog1 в обработчике события OnPaint также прописано Код: procedure TDialog1.FormPaint(Sender: TObject); begin //Просто если ее убрать, то диалог никогда не получит TOPMOST, описанный глюк Дельфи Application.RestoreTopMosts; end; | Ну теперь самое интересное... При потере приложением фокуса (например при переключении с проги в WinWord), Dialog1 как полагается находится TopMost, но MainForm, то, как должно быть, находиться за Dialog1 (но поверх WinWord), а то слетает под окно WinWord. Пробовал, перехватывать активацию Dialog1, но результат нуль Как бороться?
---------- Хочешь насмешить Бога? Тогда расскажи ему о своих планах! |
| Всего записей: 1568 | Зарегистр. 05-01-2003 | Отправлено: 00:14 16-06-2004 | Исправлено: 3SCrack, 00:29 16-06-2004 |
|