Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Окно поверх всех окон [D5, WinXP]


Страницы:   1 2 3

DJ Kondakov ©   (2008-04-22 14:57:00) 

Как сделать окно поверх всех окон в системе вообще? Насколько я знаю, FormStyle := fsStayOnTop делает окно поверх только остальных окон приложения.


Тын-Дын   (2008-07-09 14:17:00) [21]


> brother ©   (09.07.08 14:13) [29]
> > Достаточно сделать настраиваемой такую возможность...
>
> кому программам разных авторов?)
> да не будут они ОБЕ наверху! или будут меняться местмаи
> с n переодичностью...


Так сделай свою программу настраиваемой. Кто мешает-то?


brother   (2008-07-09 14:13:00) [22]

> Достаточно сделать настраиваемой такую возможность...

кому программам разных авторов?)
да не будут они ОБЕ наверху! или будут меняться местмаи с n переодичностью...


Тын-Дын   (2008-07-09 14:11:00) [23]


> DVM ©   (09.07.08 14:09) [27]
>
> > А это обязательно - запускать ещё одну такую программу?
>
>
> Не знаю, но ведь не исключено. Да и не исключено, что из
> двух совсем разных программ разных авторов обе захотят всегда
> сидеть наверху. Будет чехарда.


Достаточно сделать настраиваемой такую возможность...


brother   (2008-07-09 14:09:00) [24]

> запускать ещё одну такую программу?

а если они обе всеж стартанут?


DVM   (2008-07-09 14:09:00) [25]


> А это обязательно - запускать ещё одну такую программу?

Не знаю, но ведь не исключено. Да и не исключено, что из двух совсем разных программ разных авторов обе захотят всегда сидеть наверху. Будет чехарда.


Тын-Дын   (2008-07-09 14:05:00) [26]


> DVM ©   (09.07.08 13:58) [24]
>
> > С чего бы это?
>
> Потому, что не бывает в системе окон выше всех (в отличие
> от ниже всех). Как в стопке листов не бывает самого верхнего.
>  Всегда сверху можно положить еще лист. Если запустить две
> копии программы из [20] что начнется? Ерунда будет.


А это обязательно - запускать ещё одну такую программу?


DVM   (2008-07-09 13:58:00) [27]


> С чего бы это?

Потому, что не бывает в системе окон выше всех (в отличие от ниже всех). Как в стопке листов не бывает самого верхнего. Всегда сверху можно положить еще лист. Если запустить две копии программы из [20] что начнется? Ерунда будет.


Тын-Дын   (2008-07-09 13:52:00) [28]


> brother ©   (09.07.08 13:27) [22]
> никак или через одно место...


С чего бы это?


brother   (2008-07-09 13:27:00) [29]

никак или через одно место...


Дмитрий Белькевич   (2008-07-09 12:35:00) [30]

>Хы-хы... Оказывается, в Delphi 10 Lite fsStayOnTop делает форму поверх всех окон в системе... А я мозги компостировал..

Выше винампа, надеюсь?


Тын-Дын   (2008-07-07 01:22:00) [31]

Вот один из методов:

procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnIdle := Idle;
end;


procedure TForm1.Idle(Sender: TObject; var DOne: BOolean);
var
 Pt: TPoint;
 R: TRect;
begin
 if Assigned(Form4) then
 begin
   GetCursorPos(Pt);
   R := Rect(Form4.Left,Form4.Top,Form4.Left+Form4.Width,Form4.Top+Form4.Height);
   if not PtInRect(R,pt) then SetWindowPos(Form4.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
 end;
end;


DJ Kondakov   (2008-07-05 09:48:00) [32]

Хы-хы... Оказывается, в Delphi 10 LitefsStayOnTop делает форму поверх всех окон в системе... А я мозги компостировал...


Ins   (2008-05-06 19:17:00) [33]


> Насколько я знаю, FormStyle := fsStayOnTop делает окно поверх
> только остальных окон приложения.

Полагаю, ваша StayOnTop-форма утопает при переключении на другое приложение? Тогда смею предположить, что это неглавная форма, так как с главными такого эффекта не наблюдается. VCL очень хитро обращается с StayOnTop, в частности, этот флажок сбрасывается для всех форм кроме главной при деактивации приложения. Подавить такое поведение можно несколькими способами, я предпочитаю такой. Для формы, которая должна быть StayOnTop перекрываем CreateParams таким образом:

TForm2 = class(TForm)
protected
 procedure CreateParams(var Params: TCreateParams); override;
end;
...

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.WndParent:=0; // "Отвязываем" форму от Application.Handle
 Params.ExStyle:=Params.ExStyle or WS_EX_TOPMOST;
end;


Поп Гапон   (2008-05-06 18:50:00) [34]

SetWindowPos(Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE OR SWP_NOSIZE OR SWP_SHOWWINDOW);


DVM   (2008-04-25 13:03:00) [35]


> {RASkov} ©   (25.04.08 12:45) [15]

Тогда я предлагаю проецировать изображение окна с помощью проектора на поверхность экрана монитора. И пусть кто-нибудь попробует его перекрыть.


{RASkov}   (2008-04-25 12:45:00) [36]

> [14] DVM ©   (25.04.08 10:39)
> В конкурсе участвуют окна, распечатанные на принтере?

Могут, только участовавать будут в своей весовой категории...
Кто первый прелипил, тот и проиграл...
:о)


DVM   (2008-04-25 10:39:00) [37]


> Dmitry S ©   (24.04.08 23:48) [13]

В конкурсе участвуют окна, распечатанные на принтере?


Dmitry S   (2008-04-24 23:48:00) [38]

Устраиваем турнир!
Желающие, пишите программу для удержания окна выше остальных. Победит та программа, чье окно окажеться выше всех.
Порядок запуска процессов выбирается случайно.

Окно должно быть любого цвета с различимой надписью: имя участника.

Условие: Касперский запущенный на всю катушку не должен паниковать по поводу методов удержания окна.

Заодно и выясним=)


Дмитрий С   (2008-04-24 17:34:00) [39]


> DVM ©

+ вычисление конкурентов и TerminateProcess :)


{RASkov}   (2008-04-24 11:19:00) [40]

....т.е. даже не обязательно это будут приложения одного автора, а разных... двух разных и больных авторов :)

Это "хорошо" еще секунда или более, не так эфектно, а если меньше интервал.... во борьба начнется :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо