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

Вниз

Сменить вид иконки в трее   Найти похожие ветки 

 
Vyacheslav   (2008-06-09 15:04) [0]

Есть приложение с скрытой формой и иконкой в трее. RX библиотеки нет возможности подключить, да как и впрочем любые другие. Каким образом можно сменить или саму иконку (использую икону приложения) на другую, каким либо способом или сделать текущую иконку в оттенках серого (вроде как неактивной)?
Вот код, которым пользуюсь для отображения иконки в трее:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellApi;

const
WM_NOTIFYTRAYICON = WM_USER + 1;

type
TForm1 = class(TForm)
procedure FormDestroy(Sender: TObject);

procedure FormCreate(Sender: TObject);
private
{ Private declarations }

procedure WMTRAYICONNOTIFY(var Msg: TMessage);
message WM_NOTIFYTRAYICON;

public
{ Public declarations }
end;

var
Form1: TForm1;
tray: TNotifyIconData;
TrayIcon: TIcon;

implementation

{$R *.dfm}

procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage);
begin
{обрабатываем события на иконке в трее}
case Msg.LParam of
WM_LBUTTONDOWN: Form1.Visible:=true;
WM_LBUTTONDBLCLK: {код обработки события двойного нажатия на левую кнопку мыши}
WM_LBUTTONUP: {код обработки события отпускания левой кнопки мыши}

WM_RBUTTONDOWN: {код}
WM_RBUTTONDBLCLK: {код}
WM_RBUTTONUP: {код}

WM_MOUSEMOVE: {код}
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
try
with tray do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 1;
end;
Shell_NotifyIcon(NIM_DELETE, Addr(tray));
finally
Application.Terminate;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TrayIcon := Application.Icon;
with tray do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_NOTIFYTRAYICON;
hIcon := TrayIcon.Handle;
szTip := ("Это мое приложение в трее");
end;
Shell_NotifyIcon(NIM_ADD, Addr(tray));
end;

procedure TForm1.GoToTrayButtonClick(Sender: TObject);
begin
//сворачиваемся в Трей
Form1.Visible:=false;
end;

end.


 
SergeyIT ©   (2008-06-09 15:34) [1]

Вот по таймеру переношу данные на сервер и меняю иконку

procedure TMainCopy.TimerTimer(Sender: TObject);
var
 i: Integer;
begin
 inTimer := TRUE;
 i := CopyNext;
 if i <> iState then
 begin
   ModifyTrayIcon(i);
 end;
 inTimer := FALSE;
end;

procedure TMainCopy.ModifyTrayIcon(ind: Integer);
var
  nidata : TNotifyIconData;
  s: String;
begin
 with nidata do
 begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := Self.Handle; //HWND вашего окна (окна принимающего обратные сообщения)
   uID := 1;          // номер значка
   uCallBackMessage := WM_COPYICONNOTIFY;
   hIcon := Icons[ind].Handle;   // то откуда сдергивается значек
                                    // это может быть и ImageList и т.д.
   case ind of
   0: s := "Nothing to copy";
   1: s := "Running";
   else s := LastError;
   end;
   StrPCopy(szTip, s);  // всплывающая строка,
   uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; //обрабатываемые флаги
   Shell_NotifyIcon(NIM_MODIFY, @nidata);    // добавление значка
   iState := ind;
 end;
end;

где
   Icons: Array[0..2] of TIcon;
   iState: Integer;


 
Юрий Зотов ©   (2008-06-09 16:29) [2]

> Vyacheslav   (09.06.08 15:04)  

NIM_MODIFY - обновление иконки.



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

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

Наверх




Память: 0.47 MB
Время: 0.02 c
3-1201365475
leonidus
2008-01-26 19:37
2008.07.06
Ищу простую СУБД


2-1212579950
Гость
2008-06-04 15:45
2008.07.06
Как ограничить кол-во символов в Label


2-1212774296
DJ_UZer
2008-06-06 21:44
2008.07.06
При наведении файла на форму - открытие


15-1211668991
TIF
2008-05-25 02:43
2008.07.06
Photoshop... Как сделать закруглённые углы?


11-1184554609
ЛАМА_0
2007-07-16 06:56
2008.07.06
Баг?.