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

Вниз

Окно top most   Найти похожие ветки 

 
Игорь М.   (2006-01-24 13:09) [0]

Подскажите как всё-таки форму сделать поверх всех окон других приложений?
Типа showModal только что бы не ждало modalResult.

Нашёл пример который по описанию должен это сделать но он не работает:

with MyForm do  SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);


 
Игорь Шевченко ©   (2006-01-24 13:35) [1]


> но он не работает


Работает. Для главной формы


 
Игорь М.   (2006-01-24 13:55) [2]

Да в том то и дело что мне нужно не для главной формы.
Вариант:
     SetForegroundWindow(VideoF.Handle);
     Application.Restore;
мне не подходит.
Нужно что бы система сама знала что моё окно должно быть сверху.
Странно, для меня это оказалось траблой над которой уже часа два бьюсь:)


 
Игорь Шевченко ©   (2006-01-24 14:18) [3]


> Да в том то и дело что мне нужно не для главной формы.


{
 Модуль: PopupForm

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

 Автор: Игорь Шевченко

 Дата создания: 13.06.2002

 История изменений:
}
unit PopupForm;

interface

uses
 Windows, Messages, SysUtils,
{$IFDEF VER140}
 Variants,
{$ENDIF}
 Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TfPopup = class(TForm)
   AlwaysOnTopCheckBox: TCheckBox;
   Edit1: TEdit;
   procedure FormDestroy(Sender: TObject);
   procedure FormActivate(Sender: TObject);
   procedure AlwaysOnTopCheckBoxClick(Sender: TObject);
 protected
   procedure CreateParams (var Params : TCreateParams); override;
 end;

var
 fPopup: TfPopup;

implementation

{$R *.dfm}

procedure TfPopup.CreateParams (var Params : TCreateParams);
begin
 inherited;
 if AlwaysOnTopCheckBox.Checked then
   with Params do begin
     Style := (Style OR WS_POPUP) AND (NOT WS_CHILD);
     WndParent := HWND_DESKTOP;
   end;
end;

procedure TfPopup.FormDestroy(Sender: TObject);
begin
 fPopup := nil;
end;

procedure TfPopup.FormActivate(Sender: TObject);
begin
 if AlwaysOnTopCheckBox.Checked then
   SetWindowPos (Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE OR SWP_NOSIZE);
end;

procedure TfPopup.AlwaysOnTopCheckBoxClick(Sender: TObject);
begin
 RecreateWnd;
end;

end.


 
Игорь М.   (2006-01-24 15:02) [4]

Идея понятна, но нихрена почему-то под XP не работает:

procedure TVideoF.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 with Params do  Style := (Style OR WS_POPUP) AND NOT WS_DLGFRAME AND (NOT WS_CHILD);
 VideoF.ParentWindow := 0;
end;

WndParent - это чьё свойство?

В принципе переделать видеоокно под главное не проблема.
Всё - таки интересно, как побороть:)


 
Eraser ©   (2006-01-24 15:05) [5]


> Игорь М.   (24.01.06 15:02) [4]

procedure TVideoF.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do  Style := (Style OR WS_POPUP) AND NOT WS_DLGFRAME AND (NOT WS_CHILD);
VideoF.ParentWindow := 0;
end;


и

procedure TfPopup.CreateParams (var Params : TCreateParams);
begin
inherited;
if AlwaysOnTopCheckBox.Checked then
  with Params do begin
    Style := (Style OR WS_POPUP) AND (NOT WS_CHILD);
    WndParent := HWND_DESKTOP;
  end;
end;

найди 10 отличий? )

А вот если окно не устанавливать HWND_TOPMOST, то строка
WndParent := HWND_DESKTOP;
приведёт к такому нехорошему эффекту
http://delphimaster.net/view/1-1138016742/


 
Игорь М.   (2006-01-24 16:03) [6]

Ну 10 не 10, а тормознул точно:)
Да, спасибо, работет.
Только в оличии от твоего случая не желательно показывать моё окно на таскбаре.
Можно ли как-то удалить его оттуда?


 
Игорь Шевченко ©   (2006-01-24 16:12) [7]


> Можно ли как-то удалить его оттуда?


Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW


 
Игорь М.   (2006-01-24 16:22) [8]

Спасибо большое!!!, буду должен:)



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

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

Наверх




Память: 0.49 MB
Время: 0.037 c
15-1142247003
Pearled
2006-03-13 13:50
2006.04.09
Помогите найти книгу "Системное программное обеспечение"


2-1143465999
worldmen
2006-03-27 17:26
2006.04.09
Как использовать Table.Filter


2-1143185634
Lera
2006-03-24 10:33
2006.04.09
другое приложение


1-1141392766
Uran
2006-03-03 16:32
2006.04.09
Отобразить новое окно неактивным


2-1143056917
49 Cent
2006-03-22 22:48
2006.04.09
Как сортировать по убыванию?