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

Вниз

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

 
Pank   (2003-09-01 12:46) [0]

Как сделать, чтобы форма оставалась действительно поверх всех окон? Спасибо.


 
Evgeniy_K   (2003-09-01 14:17) [1]

Нужно постоянно помещать форму вверх очереди, но тогда она будет перекрывать даже собственные Popup-меню.


 
Игорь Шевченко ©   (2003-09-01 15:23) [2]

SetWindowPos (Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE) не помогает ?


 
Pank   (2003-09-01 17:36) [3]

2Игорь Шевченко: не-а, не помогает.

2Evgeniy_K: а как это сделать?


 
Игорь Шевченко ©   (2003-09-01 17:41) [4]

Pank (01.09.03 17:36) [3]


> не-а, не помогает.


Подробнее: когда вызываешь, когда не помогает ?


 
Pank   (2003-09-01 17:48) [5]

Написал эту строку при создании формы.
Но потом всё равно она закрывается другими приложениями.
Или вы имели ввиду, что надо это повторять через таймер? Объясните, пожалуйста.


 
Игорь Шевченко ©   (2003-09-01 17:59) [6]

А форма главная или неглавная ?


 
Pank   (2003-09-01 18:04) [7]

Не главная.
У меня главная форма лежит в трее, а эта вот, вторая, должна как указатель быть сверху.


 
Igor__ ©   (2003-09-01 18:39) [8]

А чем тебе не нравица свойство FormStyle.


 
Игорь Шевченко ©   (2003-09-02 10:01) [9]

У неглавной формы, для того, чтобы она была StayOnTop, надо задавать Parent HWND_DESKTOP. Примерно, как здесь:
{
Модуль: 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;
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.


 
Pank   (2003-09-02 18:20) [10]

2Igor__: Не подходит, потому что тогда форма поверх всех окон только моего приложения и перекрывается той же делфой.

2Игорь Шевченко: Спасибо большое, это помогло. Но теперь другая проблема: главная форма, как и раньше лежит в трее, а вот та, которую я сделал поверх всех, отображается на панели задач. Можно ли это исправить?


 
Игорь Шевченко ©   (2003-09-02 18:22) [11]

Например, так:


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);
ExStyle := ExStyle or WS_EX_TOOLWINDOW; WndParent := HWND_DESKTOP;
end;
end;


 
Pank   (2003-09-02 18:56) [12]

Чтож, вопрос исчерпан. Спасибо за помощь.



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
1-41325
DNS
2003-10-31 04:30
2003.11.13
Эстетический вопрос!


1-41569
афвуд
2003-10-27 15:01
2003.11.13
Нужно достать значения left, top и т.д. формы, когда она в развёр


1-41577
Furkan
2003-10-27 13:35
2003.11.13
MDI и scroll


14-42087
Сатир
2003-10-22 15:09
2003.11.13
Правые христиане лоббируют отмену второго закона термодинамики


14-42040
Vlad Oshin
2003-10-16 11:58
2003.11.13
Ищу распозванулку рукописного текста, есть где-то?