Жизнь по плану Лозовский Александр Xakep, номер #062, стр. 062-114-4 Крутая иконка в трей Теперь немного о компоненте CoolTrayIcon. Это абсолютно фриварное чудо ты можешь взять с www3.brinkster.com/troels/delphi.asp или с нашего диска. CoolTrayIcon позволяет создавать иконки в трее с очень широкими возможностями. Включая анимацию, смену иконок и свои методы для скрытия/показа формы. Кстати, этот компонент включает в себя также и собственный таймер, съедающий ресурсов меньше, чем стандартный. Как им пользоваться, ты можешь прочесть в документации. Частью этих функций мы воспользуемся в кнопке «свернуть» - это две простые строчки: Application.Minimize; CoolTrayIcon1.HideMainForm; После нажатия кнопки программа торжественно улетит к часикам и больше не будет мозолить глаза на панели задач. Конец задания То, что мы сейчас написали – это очень сырой вариант шедулера. В принципе, проги такого типа очень нужны и в нелегком Х-деле – даже отправку паролей по почте иногда надо запланировать. Насчет иконок я тоже высказался не зря. Меня иногда спрашивают, как легче всего обойти антивирус или файрвол. Так вот, проще всего их не обходить, а заражать (об этом я писал в Спеце «ВИРУСЫ», статья «High Level Code») или убивать. А на место убитой проги ставить свое фейк-творение, поскольку редкий юзер интересуется их логами. Им обычно достаточно обнадеживающей иконки в виде паучка или доктора ;). Событие OnTimer procedure TForm1.Timer1Timer(Sender: TObject); var NowDate, BDate: string; begin ClientDataSet1.First; While not ClientDataSet1.Eof do begin NowDate:= DateTimeToStr(now); BDate:= DateTimeToStr(ClientDataSet1.FieldByName('DateTime').AsDateTime); Delete (NowDate, length(NowDate)-2, 2); Delete (BDate, length(bdate)-2, 2); IF NowDate = Bdate then begin IF DBEdit3.Text<>'' then PlaySound (PCHar(DBEdit3.Text), SND_ASYNC, SND_NOWAIT); IF DBEdit1.Text<>'' then WinExec (PCHar(DBEdit1.text),0); // PCHar не используй form2.Memo1.Lines:= DBMemo1.Lines; ClientDataSet1.Delete; Form2.ShowModal; end; application.ProcessMessages; end; Полезные качества CoolTrayIcon Icon – путь к иконке, которая будет светиться в трее. Hint – короткая строка (128 символов), отображающаяся при наведении мышки. PopupMenu – какое Popup использовать. Для этого ты должен сначала его создать ;). Leftpopup – какое всплывающее меню будет использовано для левой кнопки. CycleIcons – циклировать ли иконки из IconList. По умолчанию – FALSE. Если ты хочешь менять иконки, то поставь IconList и свяжи его с компонентом (свойство IconList). MinimizeToTray – сворачивает прогу в трей без предварительной минимизации. ShowBalloonHint - показывает хинт. Ей необходимо передать: Title – заголовок хинта, Text – текст, IconType – тип иконки (на моем скрине - bitInfo), TimeoutSecs – время существования. В общем, постарайся, и твоя зло-прога ни в чем не будет уступать невинно убиенному ей антивирусу ;). Обратная функция – CloseBalloonHint. CD На диске расположился полноценный вариант шедулера. Также там лежит компонент CoolTrayIcon. Как я говорил в статье, этот компонент поможет тебе работать с треем. INFO Помни об интерфейсе, как бы банально это ни звучало. Обдумай его заранее и обсуди с народом - будет ли им это удобно? 80% прог не получают нужной популярности именно из-за кривого фейса, а вовсе не из-за кода ;). |