Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
1-41216
killer
2003-11-01 18:40
2003.11.13
Окно программы посередине экрана монитора


14-41984
Ihor Osov'yak
2003-10-17 21:59
2003.11.13
К знатокам околосистемного софта, типа Norton Ghost, Partition M


14-42042
Карелин Артем
2003-10-22 15:53
2003.11.13
Покритикуйте мою вторую попытку многопоточного доступа к базе.


14-42032
Lmz
2003-10-12 21:15
2003.11.13
Расшаренные папки в Win2000/XP


3-40881
rob
2003-10-20 22:45
2003.11.13
как импортировать данные из excel в DBgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский