Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование RxTrayIcon [D7, WinXP]


Yurikon ©   (2009-11-11 15:34:00) 

Добрый день!

Использую компоненту RXTrayIcon. Для восстановления приложения из трея использую

 ShowWindow(Application.Handle, SW_RESTORE);
 ShowWindow(Application.Handle, SW_SHOW);
 ShowWindow(Application.MainForm.Handle, SW_SHOW);

Если этот код запускается из контекстного меню иконки, то все ок, прога восстанавливается и делается активной. Но если этот код назначить на дабл клик иконки, то прога просто восстанавливается из трея, но не делается активной.

Подскажите, плиз, в чем может быть проблема?

Спасибо!


Yurikon   (2009-11-13 16:59:00) [1]

2 TIF:

Спасибо Вам!!! Все заработало!

:-)


TIF   (2009-11-12 03:17:00) [2]

> Подскажите, плиз, в чем может быть проблема?

Мне кажется дело не в том, что код "назначается не там где надо", а в том, что в момент этого теста приложение сворачивается на панель задач(а не скрывается с экрана вообще) перед попыткой его восстановления

После полного скрытия окна проблем с восстановлением обычно не возникает, а вот с восстановление свернутого окна как раз будет потеря фокуса

Ну это по моим скромным наблюдениям :)

Вот минимум кода, с которым у меня таких проблем нет - фокус окну передаётся и если оно ранее было скрыто, и если оно просто было свёрнуто:
//Скройся с глаз долой
ShowWindow(Form_Main.Handle, SW_HIDE);

//Открой личико
ShowWindow(Form_Main.Handle, SW_RESTORE);
SetForegroundWindow(Form_Main.Handle);


Германн ©   (12.11.09 01:08) [3]
> Application.BringToFront;
Эта строчка, наверное, как раз для достижения той же цели. Её можно использовать вместо SetForegroundWindow - эффект будет тот же


Германн   (2009-11-12 01:08:00) [3]


> Плохиш ©   (11.11.09 22:52) [2]

Я когда-то (давно это было) добавлял к
> Application.Restore;

ещё две строчки
 Application.BringToFront;
 RxTrayIcon1.Active:=False;

Но зачем и почему уже не помню. :(
Точнее про вторую строчку помню. Она была связана с gif-анимацией иконки.


Плохиш   (2009-11-11 22:52:00) [4]

Странно, я делаю в обработчике меню просто Application.Restore;и всё востанавливается. Пункт меню установлен для выполнения по умолчанию.


Leonid Troyanovsky   (2009-11-11 18:37:00) [5]


> Yurikon   (11.11.09 15:34)  

>  ShowWindow(Application.MainForm.Handle, SW_SHOW);

А чего не просто: Show.
Это ж в WndProc формы происходит?

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо