Форум: "Начинающим";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];
ВнизОтрисовать средствами 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c