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

Вниз

Как сделать чтобы форма при создании не отбирала фокус?   Найти похожие ветки 

 
SergP ©   (2006-07-11 14:43) [0]

Имеется некоторое приложение. Периодически в зависимости от неких событий, оно создает окно, с некими сообщениями.

Конструктор этой формы такой:


constructor TfrmFly.Create(colr:TColor;capt,text:string;timeout:byte);
begin
 Create(Application);
 Color:=colr;
 tag:=1;
 while flayarray[tag] do tag:=tag+1;
 flayarray[tag]:=true;
 Timer1.Interval:=timeout*1000;
 Left:=Screen.WorkAreaRect.Right-Width;
 Top:=Screen.WorkAreaRect.Bottom-Height*tag;
 Label1.Caption:=capt;
 Label2.Caption:=text;
 Show;
 Timer1.Enabled:=true;
 SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height, SWP_NOREDRAW);
end;


Проблема в том что созданное окошко забирает на себя фокус.
А это неудобно, особенно когда работать приходится с другим приложением.
Например набираю текст в ворде, в определенный момент появляется данное окошко с сообщением, и фокус с ворда переходит на него.
Как избавится от этого?


 
unknown ©   (2006-07-11 15:09) [1]

SetWindowPos(Handle,HWND_NOTOPMOST,Left,Top,Width, Height, SWP_NOREDRAW);


 
SergP.   (2006-07-11 15:35) [2]

> [1] unknown ©   (11.07.06 15:09)
> SetWindowPos(Handle,HWND_NOTOPMOST,Left,Top,Width, Height,
> SWP_NOREDRAW);


проблема в том что окно должно быть "поверх всех окон" но не отбирать фокус...


 
unknown ©   (2006-07-11 16:06) [3]

SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height, SWP_NOACTIVATE);


 
Leonid Troyanovsky ©   (2006-07-11 19:05) [4]


> SergP.   (11.07.06 15:35) [2]

> проблема в том что окно должно быть "поверх всех окон" но
> не отбирать фокус...


http://rsdn.ru/Forum/Message.aspx?mid=466741&only=1

Вообще-то, отобрать фокус Show может только
у форм своего приложения (но, никак у ворда).
Если, конечно, не менялись настройки системы в сторону old-style.

Ну, а чтобы не отбирать даже у своих, то можно showna vs show

http://groups.google.com/group/fido7.ru.delphi/msg/8f5d2648407f7aa6

--
Regards, LVT.


 
SergP.   (2006-07-11 19:17) [5]

> Вообще-то, отобрать фокус Show может только
> у форм своего приложения (но, никак у ворда).
> ...
>Ну, а чтобы не отбирать даже у своих, то можно showna vs show


В принципе так:
> SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height,
> SWP_NOACTIVATE);

работает уже нормально.
У своих конечно отбирает фокус, но свои меня не интересуют...



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
15-1151639667
MrShadow_
2006-06-30 07:54
2006.07.30
Хелп!!!


15-1151481375
IMHO
2006-06-28 11:56
2006.07.30
Слово об OpenOffice


2-1152179578
Crazy monkey
2006-07-06 13:52
2006.07.30
Как добавить данные в dblistbox?


15-1151649881
MBo
2006-06-30 10:44
2006.07.30
Пятничные похождения Васи Пупкина и другие задачки ;)


2-1152179098
Footballer
2006-07-06 13:44
2006.07.30
Где взять красивые Popupmenu