Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.005 c
15-1233903923
Кое кто
2009-02-06 10:05
2009.04.12
Реально ли перейти на бумажные пакеты?


15-1234382192
Brigador
2009-02-11 22:56
2009.04.12
Установка компонента, ПОМОГИТЕ !!!


15-1234284263
AlexDan
2009-02-10 19:44
2009.04.12
Очень нужна обкатка проекта.


15-1234215001
Юрий
2009-02-10 00:30
2009.04.12
С днем рождения ! 10 февраля 2009 вторник


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский