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

Вниз

При Application.Minimize оставляем одно окно в OnTop   Найти похожие ветки 

 
Chlavik ©   (2004-03-11 03:40) [0]

Делаю так ...


procedure TfmTrafficGraphic.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.Style:=ds_setfont or ws_popup;
 Params.ExStyle:=ws_ex_clientedge or ws_ex_dlgmodalframe or ws_ex_topmost;
end;

procedure TfmTrafficGraphic.WMShowWindow(var Message: TWMShowWindow);
begin
if Message.Status=SW_PARENTCLOSING then
 SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE);
// inherited
end;

procedure TfmTrafficGraphic.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType<>SC_MINIMIZE then inherited;
end;


Через WMShowWindow я добился что бы окно оставалось в онтопе при сврчивании проги, но при клике на чужую прогу окно теряет ws_ex_topmost. Как с этим боротся ??? Это окно не главное окно программы и показывается не модально...


 
Defunct ©   (2004-03-11 04:01) [1]

Чудесно находится в OnTop, постоянно.

С приведенным Вами кодом, не главная форма не теряет ws_ex_topmost по клику на другую программу. Смотрите, может Вы где-то в коде сами убираете этот параметр.


 
Chlavik ©   (2004-03-11 16:52) [2]

Дедло в том что у мен стоял fsStayOnTop а Application выполняет
NormalizeTopMost НА данный момент самый оптимальный код который мен более менее подходит ..
procedure TfmTrafficGraphic.CreateParams(var Params: TCreateParams);
begin
 //Self.FormStyle:=fsNormal;
 inherited;
 Params.WndParent:=Application.MainForm.Handle;
 Params.Style:=ds_setfont or ws_popup;
 Params.ExStyle:=ws_ex_clientedge or ws_ex_dlgmodalframe or ws_ex_topmost;
end;

procedure TfmTrafficGraphic.WMActivateApp(var Message: TWMActivateApp);
begin
if Message.Active then
 begin//if  Message.ThreadId=GetCurrentThreadId then
  SetWindowPos(Handle,HWND_TOPMOST, 0,0,0,0,SWP_NOSIZE  or SWP_NOMOVE);
//   application. RestoreTopMosts;
//    application.BringToFront;
 end
else
 begin
   //application.BringToFront;
   inherited;//}
 end;
end;


Но если все это ддело вместе с какойто Модальной формой свернуть а потом развернуть то  всё пашет нормально - TfmTrafficGraphic всегда поверх всех окон даже когда прога свёрнута, но модальная форма просто теряется позади главного окна после того как развараиваеш прогу.


 
Chlavik ©   (2004-03-11 16:53) [3]

Как правильно это сделать ??



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
3-1077782615
Max
2004-02-26 11:03
2004.03.28
Запрос на объединение


7-1073672940
DelphiN!
2004-01-09 21:29
2004.03.28
Создать свой процес в потоке чужого процесса


14-1077905750
Troy
2004-02-27 21:15
2004.03.28
простой строчный калькулятор без val()


3-1078075764
Wlad
2004-02-29 20:29
2004.03.28
dbgrid


8-1068910424
Artur
2003-11-15 18:33
2004.03.28
Image. (Rotate)