Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отрисовать средствами Delphi иконку в трее


Strate ©   (2009-02-25 12:35:00) 

Здравствуйте мастера. Вопрос заключается примерно в следующем.

Каким образом можно отрисовать произвольный рисунок в трее? То есть не конкретно созданный заранее,а, например, динамически обновляемый? К примеру - график сетевой активности, проценты копирования в TotalCommander'e итп. Для отображения иконки использую стандартный TTrayIcon (D2007 вроде и выше), в нём не нашёл ни TCanvas, ни чего то похожего. Как выкрутиться? Кто как решал эту задачу?


Strate   (2009-02-25 18:50:00) [1]

Удалено модератором
Примечание: Повторять не обязательно.


Strate   (2009-02-25 17:46:00) [2]

Проблема решилась примерно так: TTrayIcon.Icon := FNewIcon;


Anatoly Podgoretsky   (2009-02-25 13:50:00) [3]

> Strate  (25.02.2009 13:34:07)  [7]

Для работы с иконкой трея есть всего одна функция Shell_NotifyIcon, ее делается все.


DVM   (2009-02-25 13:37:00) [4]


> Что именно?

Зависит от компонента, которым добавляли иконку в область уведомлений. Про стандартный не зна, не пользуюсь. В WinApi надо вызвать Shell_NotifyIcon с флагом NIM_MODIFY


Strate   (2009-02-25 13:34:00) [5]

Я догадываюсь что надо что-то вызвать для обновления иконки. Что именно?


Anatoly Podgoretsky   (2009-02-25 13:22:00) [6]

> Strate  (25.02.2009 13:20:04)  [4]

Не достаточно, и даже более - этто вообще не имеет отношения к трею.


Strate   (2009-02-25 13:20:00) [7]

Спасибо за код, ещё вопрос появился. Достаточно ли просто вызвать BitmapToIcon(MyBitmap, TTrayIcon.Icon, clNone) чтобы иконка сменилась?


Anatoly Podgoretsky   (2009-02-25 13:20:00) [8]

> Strate  (25.02.2009 12:35:00)  [0]

В трее нельзя, но можно в программе, например в буфере.


DVM   (2009-02-25 12:55:00) [9]

function BitmapToIcon(const Bitmap: TBitmap;
Icon: TIcon; MaskColor: TColor): Boolean;
{ Render an icon from a 16x16 bitmap. Return false if error.
MaskColor is a color that will be rendered transparently. Use clNone for
no transparency. }
var
BitmapImageList: TImageList;
begin
BitmapImageList := TImageList.CreateSize(16, 16);
try
  Result := False;
  BitmapImageList.AddMasked(Bitmap, MaskColor);
  BitmapImageList.GetIcon(0, Icon);
  Result := True;
finally
  BitmapImageList.Free;
end;
end;


Strate   (2009-02-25 12:45:00) [10]


> Иконку можно и на лету создавать


Вот ) Вопрос в том - как? TIcon не имеет Canvas, как его тогда динамически создать?


DVM   (2009-02-25 12:40:00) [11]


> Как выкрутиться? Кто как решал эту задачу?

Меняй иконку и все. Иконку можно и на лету создавать, но чаще всего используют много заранее заготовленных, если это возможно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо