![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StayOnTop [D6, Win95/98, WinME, NT4, Win2k, WinXP]
d6 © (2002-08-31 20:57:00)Как сделать форму StayOnTop. При установке свойства FormStyle в fsSatyOnTop форма оттображается только поверх окон своего приложения. А мне надо поверх всех.
Юрий Зотов (2002-09-01 14:53:00) [1]Точно. Tnx.
Тогда вообще непонятно - а какие же проблемы у d6?
Ученик (2002-09-01 14:47:00) [2]>Юрий Зотов © (01.09.02 14:45)
Не, не естественно,
без with Message.WindowPos^ do flags := flags or SWP_NOZORDER, все как надо
Юрий Зотов (2002-09-01 14:45:00) [3]Естественно. TaskBar - он и в Aфрике TaskBar, у него особый статус.
Ученик (2002-09-01 14:42:00) [4]>Юрий Зотов © (01.09.02 14:29)
Извиняюсь, но с этим даже не поверх TaskBar
Юрий Зотов (2002-09-01 14:29:00) [5]А что же Вы хотели? Вы ставите форму поверх всех, но ведь этого мало - надо еще запретить ее перемещение по Z-порядку.
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
end;
procedure TForm1.WMWindowPosChanging(var Message: TWMWindowPosChanging);
begin
inherited;
with Message.WindowPos^ do flags := flags or SWP_NOZORDER
end;
procedure TForm1.FormShow(Sender: TObject);
begin
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE)
end;
L (2002-09-01 13:31:00) [6]
> to d6: а ты оказывается шутник :)
> а что если вместо приведённого мною в качестве примера FORM1.Handle
> ты напишешь, MyNotMainForm.Handle ?
> т.е. в первом параметре надо указывать хэндл той формы,
> которую ты собираешься закинуть на верхний уровень.
Я так и делаю. Форма выходит на верхний уровень, но стоит мне сделать активным любое другое окно (IE например) и она благополучно скрывается под ним.
d6 (2002-09-01 13:31:00) [7]
> to d6: а ты оказывается шутник :)
> а что если вместо приведённого мною в качестве примера FORM1.Handle
> ты напишешь, MyNotMainForm.Handle ?
> т.е. в первом параметре надо указывать хэндл той формы,
> которую ты собираешься закинуть на верхний уровень.
Я так и делаю. Форма выходит на верхний уровень, но стоит мне сделать активным любое другое окно (IE например) и она благополучно скрывается под ним.
VID (2002-09-01 12:36:00) [8]to d6: а ты оказывается шутник :)
а что если вместо приведённого мною в качестве примера FORM1.Handle ты напишешь, MyNotMainForm.Handle ?
т.е. в первом параметре надо указывать хэндл той формы, которую ты собираешься закинуть на верхний уровень.
d6 (2002-09-01 11:26:00) [9]
> VID ©
Это проходит только с главной формой. А мне надо любую.
VID (2002-09-01 00:34:00) [10]SetWindowPos(form1.handle, hwnd_topmost, 0,0,0,0, swp_nomove+swp_nosize);
Ученик (2002-08-31 21:22:00) [11]>d6 (31.08.02 20:57)
Оно будет поверх всех, пока другое приложение это не изменит.
Алексей Ким (2002-08-31 20:59:00) [12]Уже спрашивал... и мне надо было но люди такие
ответы писали...