Вниз
Скачать: CL | DM;

Использование RxTrayIcon   Найти похожие ветки 

← →
Yurikon   (2009-11-11 15:34) [0]

Добрый день!

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

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

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

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

Спасибо!


← →
Leonid Troyanovsky ©   (2009-11-11 18:37) [1]


> Yurikon   (11.11.09 15:34)  

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

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

--
Regards, LVT.


← →
Плохиш ©   (2009-11-11 22:52) [2]

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


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


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

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

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

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


← →
TIF ©   (2009-11-12 03:17) [4]

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

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

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

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

Вот минимум кода, с которым у меня таких проблем нет - фокус окну передаётся и если оно ранее было скрыто, и если оно просто было свёрнуто:
//Скройся с глаз долой
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 - эффект будет тот же


← →
Yurikon   (2009-11-13 16:59) [5]

2 TIF:

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

:-)



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.005 c
2-1301297993
aka
2011-03-28 11:39
2011.07.03
Пазлы


8-1212752371
zuzick
2008-06-06 15:39
2011.07.03
Отключить звук в TMediaPlayer


15-1300224592
Юрий
2011-03-16 00:29
2011.07.03
С днем рождения ! 16 марта 2011 среда


2-1301073992
awer
2011-03-25 20:26
2011.07.03
Не работает SetTimer ((


15-1300440240
Luarvic
2011-03-18 12:24
2011.07.03
Игровой чат в mmorpg (реализация)




   Наверх