Форум — Ответы ( К темам )
? | Иван: Как сделать так чтобы иконка на 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 Может в коде чего лишнее, особо не проверял, но работает. |