Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Форма поверх остальных окон.   Найти похожие ветки 

 
nord489   (2007-08-18 17:43) [0]

Здравствуйте! Подскажите, пожалуйста, как сделать чтобы форма отображалась всегда поверх остальных окон?


 
tmp   (2007-08-18 18:16) [1]

Form1.FormStyle := fsStayOnTop;


 
Anatoly Podgoretsky ©   (2007-08-18 19:25) [2]

Слово "всегда" неуместно.


 
alshtam   (2007-08-21 10:28) [3]

отображать sjhve какмодальную Form1.ShowModal;


 
wp2 ©   (2007-08-21 10:32) [4]

>отображать sjhve какмодальную Form1.ShowModal;
Это может быть не совсем тем, что надо. Так как главная программа будет спотыкаться и ждать ответа от этой модульной формы.


 
Dib@zol ©   (2007-08-21 10:32) [5]

SetWindowPos(Form1.Handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);


 
DVM ©   (2007-08-21 10:33) [6]

SetWindowPos() + HWND_TOPMOST + WM_WINDOWPOSCHANGING


 
Dib@zol ©   (2007-08-21 10:34) [7]

Муахахахаха, я первый :)


 
DVM ©   (2007-08-21 10:37) [8]


> Dib@zol ©

Ты крут неимоверно!

Только твой ответ не полный. То, что ты написал двинет окно наверх, но оно там долго не удержится. Для последующего удержания окна наверху надо обрабатывать WM_WINDOWPOSCHANGING


 
Dib@zol ©   (2007-08-21 10:53) [9]

> [8] DVM ©   (21.08.07 10:37)

Кхм. Правда? В хелпе написано, что с таким параметром его никто не-топмост не перекроет. Я попробовал - и у меня его перекрыла только панель задач. Т.к. она также топмост. Ну а если нужно уж быть из всех тоопмостов топмостом, т о тогда да... WM_WINDOWPOSCHANGING. Но опять же, если запустить две таких проги, то не приведёт ли это к повисанию обоих в борьбе за первенство на экране?


> Ты крут неимоверно!

Не обижайся. Я всего лишь апришёл к тому же выводу что и ты на пару секунд раньше.


 
DVM ©   (2007-08-21 10:57) [10]


> Но опять же, если запустить две таких проги, то не приведёт
> ли это к повисанию обоих в борьбе за первенство на экране?
>

Ну это само собой. Об этом и сказали в [2]. Ниже всех расположить окно можно - выше всех только до первого такого же окна.

> Не обижайся.

И в мыслях не было.


 
antonn ©   (2007-08-21 11:41) [11]


> Но опять же, если запустить две таких проги, то не приведёт
> ли это к повисанию обоих в борьбе за первенство на экране?
>

нет, не приведет. а вот если будет два окна в одной программе рвущихся наверх - то да, может зависнуть


 
Вася Правильный   (2007-08-21 11:45) [12]


>  всегда поверх остальных окон?

автора зарэзать за такое надо
а программу расчленить и в унитаз


 
{RASkov} ©   (2007-08-21 12:38) [13]

> Ниже всех расположить окно можно

Не один ли фик выше/ниже....

> выше/ниже всех только до первого такого же окна.

?
Это вопрос
:)

> а программу расчленить и в унитаз

Ради этого ее еще и печатать... бумагу тратить :)


 
antonn ©   (2007-08-21 12:51) [14]


> Вася Правильный   (21.08.07 11:45) [12]
>
> автора зарэзать за такое надо
> а программу расчленить и в унитаз

не умно


 
DVM ©   (2007-08-21 13:27) [15]


> {RASkov} ©   (21.08.07 12:38) [13]
> > Ниже всех расположить окно можно
>
> Не один ли фик выше/ниже....

Не один. В системе есть функция для расположения одного и только одного окна в каждый момент времени ниже всех. Это обычно окно шелла.


 
{RASkov} ©   (2007-08-21 13:39) [16]

> [15] DVM ©   (21.08.07 13:27)

Да это и понятно...
> в каждый момент времени

В один момент времени есть одно верхнее и одно нижнее, ведь так?
поэтому

> > выше/ниже всех только до первого такого же окна.

Или

> > Ниже всех расположить окно можно

Можно сколь угодно таких окон?
:)


 
Вася Правильный   (2007-08-21 13:46) [17]


> не умно

"а судьи кто?"


 
DVM ©   (2007-08-21 14:22) [18]


> {RASkov} ©   (21.08.07 13:39) [16]
> > [15] DVM ©   (21.08.07 13:27)
>
> Да это и понятно...
> > в каждый момент времени
>
> В один момент времени есть одно верхнее и одно нижнее, ведь
> так?
> поэтому

Я неточно выразился наверное. Одновременно может существовать лишь одно окно, которое располагается ниже всех. Пока это окно существует, никакое другое его место занять не сможет. Функция просто ошибку вернет.

Функция эта:

UserLibHandle := LoadLibrary("USER32.DLL");
@SetShellWindow := GetProcAddress(UserLibHandle, "SetShellWindow");

Эту функцию MS не описала и оставила очевидно для себя, для эксплорера. Окно, к которому применяется эта функция уже не сдвинуть больше со своего места никуда.



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
2-1187936467
Lera
2007-08-24 10:21
2007.09.16
Динамические массивы


2-1187803320
rtm
2007-08-22 21:22
2007.09.16
Как реализовать в ShellExecute следующий вариант >>>


11-1168173331
Ned
2007-01-07 15:35
2007.09.16
Портация Registry


2-1187597172
tomkat
2007-08-20 12:06
2007.09.16
Компоненты в консольном приложении


8-1165417477
algol
2006-12-06 18:04
2007.09.16
Разобрать медиа файл и построить спектр