Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.12;
Скачать: CL | DM;

Вниз

Отрисовать средствами Delphi иконку в трее   Найти похожие ветки 

 
Strate   (2009-02-25 12:35) [0]

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

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


 
DVM ©   (2009-02-25 12:40) [1]


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

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


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


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


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


 
DVM ©   (2009-02-25 12:55) [3]

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 13:20) [4]

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


 
Anatoly Podgoretsky ©   (2009-02-25 13:20) [5]

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

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


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

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

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


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

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


 
DVM ©   (2009-02-25 13:37) [8]


> Что именно?

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


 
Anatoly Podgoretsky ©   (2009-02-25 13:50) [9]

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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2009.04.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
2-1235489040
cosinus
2009-02-24 18:24
2009.04.12
Как получить handle контрола в чужом приложении?


2-1235320820
KillaTank
2009-02-22 19:40
2009.04.12
Модальное окно в ДБ


15-1234441002
begin...end
2009-02-12 15:16
2009.04.12
Непятничная задачка для начинающих :)


2-1235641744
L.A.
2009-02-26 12:49
2009.04.12
является ли строка представлением целого числа


15-1234330396
Василий Жогарев
2009-02-11 08:33
2009.04.12
Счетчики электрической энерии "Меркурий".