Форум — Ответы     (  К темам )
 ?  Иван: Как сделать так чтобы иконка на SysTray замигала,с использованием комп (30-03-2003 20:41:49)
Как сделать так чтобы иконка на SysTray замигала,с использованием компоненты TryIcon.И еще чтобы при закрытии формы,она сворачивалась в SysTray
Спасибо!
 Владимир (31-03-2003 02:30:21)
Чтобы она замигала — надо разместить ImageList c несколькими, сменяющими друг друга иконками, и указать его в свойстве Icons компонента TrayIcon,
установить свойство AnimateInterval — время через которое иконки будут сменять друг друга — например 1000 (1 сек), и свойство Animate в true
--
Разместить на форме PopupMenu и указать его в свойстве PopupMenu компонента TrayIcon, и в свойстве PopupMenuOn — по какой команде на иконке будет открываться это всплывающее меню, например imRightClickUp — по нажатию правой кнопки мыши, и предусмотреть в всплывающем меню такие пункты меню, как
"Восстановить" и "Выход", можете и любые другие, также можно предусмотреть
восстановление формы из трея (свойство — ResroreOn), например по двойному щелчку мыши на иконке — imDoubleClick
---


А чтобы при закрытии формы она сворачивалась — обрабатывайте событие формы onClose


//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
isTray = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Exit1Click(TObject *Sender)
{
isTray = true;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(isTray) Action = caFree;
else {
Action = caNone;
Form1->Hide();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Restore1Click(TObject *Sender)
{
Form1->WindowState = wsNormal;
if(!isTray) Form1->Hide();
Form1->Show();
Application->Restore();

}
//---------------------------------------------------------------------------

где isTray описана как
private: // User declarations
bool isTray;
а Exit1Click и Restore1Click — это соответственно
обработчики события Click у пунктов всплывающего меню
Exit1 — выход, и Restore1 — восстановить

Здесь сам пример — 4 Kb

Может в коде чего лишнее, особо не проверял, но работает.