![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форма поверх остальных окон. [D7, XP]
nord489 © (2007-08-18 17:43:00)Здравствуйте! Подскажите, пожалуйста, как сделать чтобы форма отображалась всегда поверх остальных окон?
DVM (2007-08-21 14:22:00) [1]
> {RASkov} © (21.08.07 13:39) [16]
> > [15] DVM © (21.08.07 13:27)
>
> Да это и понятно...
> > в каждый момент времени
>
> В один момент времени есть одно верхнее и одно нижнее, ведь
> так?
> поэтому
Я неточно выразился наверное. Одновременно может существовать лишь одно окно, которое располагается ниже всех. Пока это окно существует, никакое другое его место занять не сможет. Функция просто ошибку вернет.
Функция эта:
UserLibHandle := LoadLibrary('USER32.DLL');
@SetShellWindow := GetProcAddress(UserLibHandle, 'SetShellWindow');
Эту функцию MS не описала и оставила очевидно для себя, для эксплорера. Окно, к которому применяется эта функция уже не сдвинуть больше со своего места никуда.
Вася Правильный (2007-08-21 13:46:00) [2]
> не умно
"а судьи кто?"
{RASkov} (2007-08-21 13:39:00) [3]> [15] DVM © (21.08.07 13:27)
Да это и понятно...
> в каждый момент времени
В один момент времени есть одно верхнее и одно нижнее, ведь так?
поэтому
> > выше/ниже всех только до первого такого же окна.
Или
> > Ниже всех расположить окно можно
Можно сколь угодно таких окон?
:)
DVM (2007-08-21 13:27:00) [4]
> {RASkov} © (21.08.07 12:38) [13]
> > Ниже всех расположить окно можно
>
> Не один ли фик выше/ниже....
Не один. В системе есть функция для расположения одного и только одного окна в каждый момент времени ниже всех. Это обычно окно шелла.
antonn (2007-08-21 12:51:00) [5]
> Вася Правильный (21.08.07 11:45) [12]
>
> автора зарэзать за такое надо
> а программу расчленить и в унитаз
не умно
{RASkov} (2007-08-21 12:38:00) [6]> Ниже всех расположить окно можно
Не один ли фик выше/ниже....
> выше/нижевсех только до первого такого же окна.
?
Это вопрос
:)
> а программу расчленить и в унитаз
Ради этого ее еще и печатать... бумагу тратить :)
Вася Правильный (2007-08-21 11:45:00) [7]
> всегда поверх остальных окон?
автора зарэзать за такое надо
а программу расчленить и в унитаз
antonn (2007-08-21 11:41:00) [8]
> Но опять же, если запустить две таких проги, то не приведёт
> ли это к повисанию обоих в борьбе за первенство на экране?
>
нет, не приведет. а вот если будет два окна в одной программе рвущихся наверх - то да, может зависнуть
DVM (2007-08-21 10:57:00) [9]
> Но опять же, если запустить две таких проги, то не приведёт
> ли это к повисанию обоих в борьбе за первенство на экране?
>
Ну это само собой. Об этом и сказали в [2]. Ниже всех расположить окно можно - выше всех только до первого такого же окна.
> Не обижайся.
И в мыслях не было.
Dib@zol (2007-08-21 10:53:00) [10]> [8] DVM © (21.08.07 10:37)
Кхм. Правда? В хелпе написано, что с таким параметром его никто не-топмост не перекроет. Я попробовал - и у меня его перекрыла только панель задач. Т.к. она также топмост. Ну а если нужно уж быть из всех тоопмостов топмостом, т о тогда да... WM_WINDOWPOSCHANGING. Но опять же, если запустить две таких проги, то не приведёт ли это к повисанию обоих в борьбе за первенство на экране?
> Ты крут неимоверно!
Не обижайся. Я всего лишь апришёл к тому же выводу что и ты на пару секунд раньше.
DVM (2007-08-21 10:37:00) [11]
> Dib@zol ©
Ты крут неимоверно!
Только твой ответ не полный. То, что ты написал двинет окно наверх, но оно там долго не удержится. Для последующего удержания окна наверху надо обрабатывать WM_WINDOWPOSCHANGING
Dib@zol (2007-08-21 10:34:00) [12]Муахахахаха, я первый :)
DVM (2007-08-21 10:33:00) [13]SetWindowPos() + HWND_TOPMOST + WM_WINDOWPOSCHANGING
Dib@zol (2007-08-21 10:32:00) [14]SetWindowPos(Form1.Handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);
wp2 (2007-08-21 10:32:00) [15]>отображать sjhve какмодальную Form1.ShowModal;
Это может быть не совсем тем, что надо. Так как главная программа будет спотыкаться и ждать ответа от этой модульной формы.
alshtam (2007-08-21 10:28:00) [16]отображать sjhve какмодальную Form1.ShowModal;
Anatoly Podgoretsky (2007-08-18 19:25:00) [17]Слово "всегда" неуместно.
tmp (2007-08-18 18:16:00) [18]Form1.FormStyle := fsStayOnTop;