![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окно поверх всех окон [D5, WinXP]
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]....т.е. даже не обязательно это будут приложения одного автора, а разных... двух разных и больных авторов :)
Это "хорошо" еще секунда или более, не так эфектно, а если меньше интервал.... во борьба начнется :)