Главная страница
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.013 c
4-1208164694
(Монстр)
2008-04-14 13:18
2009.04.12
Модем, и его статус/состояние...


2-1235193658
vegarulez
2009-02-21 08:20
2009.04.12
вопрос про SSL:= TIdSSLIOHandlerSocketOpenSSL.Create(nil);


2-1235296829
D@nger
2009-02-22 13:00
2009.04.12
cxGrid из DevExpres


2-1235468723
Korbit
2009-02-24 12:45
2009.04.12
Получить данные S.M.A.R.T от HDD


2-1235653246
ывывыв
2009-02-26 16:00
2009.04.12
перетаскивение нескольких файлов на форму