VR
Virtual Reality On-line   Delphi
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Иконки в SystemTray:
Logo

В этой статье я тебя научу, как создавать свои иконки в SystemTray, это в районе часов. Мы сделаем это двумя способами: с помощью библиотеки RX и cамостоятельно.

Для начала воспользуемся библиотекой RX. Она намного проще и удобней. Ссылку на неё можно найти в разделе "Download" и подразделе "Компоненты". Если у тебя её ещё нет, то срочно начинай скачивать, тем более, что она написана нашими программистами и абсолютно бесплатна.

Когда скачаешь архив компонентов rxlib.zip (он весит чуть более мегабайта), разархивируй его и запусти файл rxinst.exe. Программа установки скопирует все необходимые файлы на твой комп. Запомни путь, куда устанавливаешь эту библиотеку.

После установки, новые компоненты нужно подключить к Delphi. Для этого перейди в директорию, куда была установлена RXLib и найди файл Readme.rus. Открой его любым текстовом редактором. Здесь прекрасно и по русски написано, как библиотека подключается к Delphi разных версий. Например, для пятой нужно выполнить следующие действия:

Выберите пункт меню "File/Open...", и откройте пакет (package) RXCTL5.DPK. В появившемся окне "Package - ..." нажмите кнопку "Compile". После компиляции пакета RXCTL5 аналогичным образом скомпилируйте остальные run-time пакеты RXDB5.DPK и RXBDE5.DPK. Скомпилированные BPL-файлы поместите в каталог, включенный в переменную окружения PATH (например, WINDOWS\SYSTEM). После компиляции run-time пакетов окройте с помощью меню "File/Open..." файл DCLRX5.DPK. В появившемся окне "Package - ..." нажмите кнопку "Compile", и после компиляции нажмите кнопку "Install". После установки пакета DCLRX5.DPK (должен быть установлен в IDE первым) произведите те же действия с пакетами DCLRXDB5.DPK и DCLRXBD5.DPK. Не сохраняйте пакеты библиотеки RX в Delphi IDE. Если у Вас была установлена предыдущая версия библиотеки RX, удалите перед установкой старые скомпилированные packages - файлы RXCTL5.BPL, RXDB5.BPL, RXBDE5.DPK, DCLRX5.BPL, DCLRXDB5.BPL, DCLRXBD5.DPK.

Пакеты, которые тебя просят открывать кнаходятся по адресу "Путь, куда был установлен RXLib \ Директория Units" . После успешной установки у тебя появится три новых закладки: RX Controls, RX Tools и RX DBAware.

Logo

На закладке RX Tools есть очень хороший компонент - RXTrayIcon Logo. Брось его на форму.

Теперь в свойстве Icon задай какую-нибудь иконку. Всё!!! Можно запускать программу и в SystemTray уже будет видна эта иконка. Но этого мало. Иконка ничего не умеет делать. Её надо чему-то научить.

Давай для начала сделаем её анимированной. Для этого дважды щёлкни по свойству Icons и перед тобой откроется окно:

Logo

Здесь ты можешь задать сразу кучу иконок, которые будут последовательно менять друг друга. Нажимая на кнопку с изображением плюса, ты можешь добавлять в последовательность новые иконки. Добавь в этот список две или более иконок. И закрой окно.

Теперь измени свойство Interval на 300. Это количество миллисекунд, которые будет видна каждая иконка. Чем меньше это число, тем чаще меняются иконки в SystemTray.

Теперь бросим на форму одну кнопку и обзавём её "Animate". По её нажатию напишем следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
 RxTrayIcon1.Animated:=true;
end;

Если ты теперь запустишь программу, то по нажатию кнопки "Animate" иконки в SystemTray нфчнут менятся создавая анимацию. Результат должен быть похожим на этот скрин:

Logo

И это опять ещё не всё. Иконка та анимированная, но ничего не умеет делать. Чтобы она хоть что-то могла, к ней надо подключить меню. Для этого брось на форму компонент PopupMenu c закладки Standard . Дважды щёлкни по этому компоненту и создай только один пункт: "Выход".

Logo

Для этого пункта создай событие OnClick и напиши в нём:

procedure TForm1.N1Click(Sender: TObject);
begin
 Close;
end;

Теперь у компонента RxTrayIcon1 в свойстве PopupMenu укажи созданное меню. Вот теперь всё. У нас есть иконка в SystemTray, она может быть анимированной и по нажатию на неё мышкой выскакивает меню. Это всё что надо для настоящего кодера.

И на последок я расскажу, как создать иконку с помощью WinAPI, без использования компонентов. Для этого есть функция WINAPI Shell_NotifyIcon. У неё два параметра. Первый может принимать значения:

  • NIM_ADD - добавить иконку.
  • NIM_DELETE - удалить иконку.
  • NIM_MODIFY - редактировать

Второй параметр - это указатель на структуру TNotifyIconData. Она состоит из:

  • cbSize - сюда нужно занести размер структуры.
  • hWnd - указатель на окно создающее иконку.
  • uID - приложение отвечающее за иконку.
  • uFlags - флаги, указывающие на те поля, которые заполнены в структуре. Возможны сочетания трёх значений: NIF_ICON (в свойстве hIcon указана иконка), NIF_MESSAGE (в свойстве uCallbackMessage указана функция обработчик сообщений для иконки) и NIF_TIP (в свойстве szTip указан текст подсказки).
  • uCallbackMessage - функция обработчик сообщений для иконки.
  • hIcon - иконка.
  • szTip - подсказка (максимум 64 символа).

Ну и давай рассмотрим пример использования этой функции:

var
 NI : TNotifyIconData;
begin
 NI.uFlags := nif_icon or nif_tip or nif_message;
 NI.cbSize := SizeOf(NI);
 NI.Wnd := Window;
 NI.szTip := 'Подсказка';
 NI.hIcon := LoadIcon(HInstance, 'MAINICON');
 NI.uCallBackMessage := wm_nid;

 Shell_NotifyIcon(nim_add, @NI);
 Shell_NotifyIcon(nim_delete, @NI);
end;

На этом разряшите откланиться. Хотя нет, не буду. Просто увидимся в ближайшее время на моём сайте. По крайней мере я надеюсь.

 Исходники примера забирай здесь


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©