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

Вниз

Иконка в трее   Найти похожие ветки 

 
-virus- ©   (2005-08-01 22:02) [0]

Мастера, нужна ваша помощь.
Я помещаю программу в трей при помощи процедуры:


procedure TForm1.CreateTrayIcon(n: integer; Tip: string);
var
nidata: TNotifyIconData;
begin
with nidata do
 begin
 cbSize:=SizeOf(TNotifyIconData);
 Wnd:=Self.Handle;
 uId:=n;
 uFlags:=NIF_Icon or NIF_MESSAGE or NIF_TIP;  
 uCallBackMessage:=WM_MYTRAYNOTIFY;
 HIcon:=Form1.Icon.Handle;
 szTip:="Áóäèëüíèê";
 StrPCopy(szTip,Tip);
 end;
 Shell_NotifyIcon(NIM_ADD, @nidata);
end;


и убираю при помощи:
procedure TForm1.DeleteTrayIcon(n: integer);
var
nidata: TNotifyIconData;
begin
with nidata do
 begin
 cbSize:=SizeOf(TNotifyIconData);
 Wnd:=Self.Handle;
 uId:=n;
 end;
 Shell_NotifyIcon(NIM_DELETE, @nidata);
end;


Но как сделать, чтобы при нажатии на иконку в трее срабатывало событие, например Form1.Show; ?

И еще, как сделать событие при сворачивании формы?


 
Fay ©   (2005-08-01 22:04) [1]

2 -virus- ©   (01.08.05 22:02)
Обработай WM_MYTRAYNOTIFY


 
lookin ©   (2005-08-01 22:23) [2]

>>Но как сделать, чтобы при нажатии на иконку в трее срабатывало событие,
>>например Form1.Show; ?

как ни смешно это звучит, у меня это реализовано, но вот не понимаю, как... Не могу найти вызова искомой процедуры, а ведь все работает.... Что то мистическое или просто выпимши...


 
Defunct ©   (2005-08-02 02:27) [3]

lookin ©   (01.08.05 22:23) [2]

Не удивительно, в uCallbackMessage можно задавать не только WM_MYTRAYNOTIFY ;>

> -virus- ©
 TForm1 = class(TForm)
 ..
   procedure zzzz(var msg: TMessage);message WM_MYTRAYNOTIFY
 ..
 end

procedure TForm1.zzz;
begin
 if Msg.LParam = WM_LBUTTONDOWN then
    begin
       if Not Visible Then
          begin
             Show;
             Application.BringToFront
          end
       else
          Hide
     end
end;


 
lookin ©   (2005-08-02 02:43) [4]

Defunct ©   (02.08.05 02:27)

Да, только я по выпимшести код забыл привети...

procedure TEQAPbase.EQAPbaseOnMinimize(Sender: TObject);
var EqapIcon: NOTIFYICONDATA;
begin
 if EqapSettings.MainOptions.TrayIcon=1 then
 with EqapIcon do begin cbSize:=SizeOf(NOTIFYICONDATA);
 Wnd:=EQAPbase.Handle; uID:=1; uCallbackMessage:=WM_USER+1;
 uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
 hIcon:=Application.Icon.Handle; szTip:=Exec;
 Shell_NotifyIcon(NIM_ADD,@EqapIcon); ShowWindow(Handle,SW_HIDE);
 ShowWindow(Application.Handle,SW_HIDE); end;
end;

//вот эта вещь нигде у меня не вызывается.....
procedure TEQAPbase.EqapIconClick(var Msg: TMessage);
var EqapIcon: NOTIFYICONDATA;
begin
 if Msg.LParam=WM_LBUTTONDOWN then
 with EqapIcon do begin cbSize:=SizeOf(NOTIFYICONDATA);
 Wnd:=EQAPbase.Handle; uID:=1; uCallbackMessage:=WM_USER+1;
 uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
 hIcon:=Application.Icon.Handle; szTip:=Exec;
 Shell_NotifyIcon(NIM_DELETE,@EqapIcon);
 ShowWindow(Application.Handle,SW_SHOWNORMAL);
 SetForegroundWindow(EQAPbase.Handle); end;
end;

Эффектом служит то, что при сворачивании программы, она уползает в трей. Пришелчке на иконку трея программа разворачивается...


 
-virus- ©   (2005-08-02 13:18) [5]

Defunct
Спасибо за процедуру.


 
Fay ©   (2005-08-02 18:34) [6]

2 Defunct ©   (02.08.05 2:27) [3]
Можно было просто перекрыть WndProc


 
Defunct ©   (2005-08-02 21:24) [7]

Fay ©   (02.08.05 18:34) [6]

можно, но я просто дополнил ваш ответ [1]


 
Fay ©   (2005-08-02 21:27) [8]

2 Defunct ©   (02.08.05 21:24) [7]
procedure zzzz(var msg: TMessage);message WM_MYTRAYNOTIFY
годится только в том случае, когда WM_MYTRAYNOTIFY - константа.
Бывает неудобно/неприменимо.


 
ааа   (2005-08-03 05:53) [9]

> Defunct ©   (02.08.05 02:27) [3]
> Не удивительно, в uCallbackMessage можно задавать не только
> WM_MYTRAYNOTIFY ;>

тема не раскрыта. :)
nid.uCallbackMessage:=WM_SYSCOMMAND;
nid.uId:=SC_RESTORE;

не пробовал но должно работать.


 
ааа   (2005-08-03 06:52) [10]

нет, глючит [9]. фигню я написал.
2 модератор - можете удалить



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

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

Наверх




Память: 0.49 MB
Время: 0.046 c
4-1119944529
Хинт
2005-06-28 11:42
2005.08.21
Аналог ShowCursor для других приложений


1-1122724754
Liavik
2005-07-30 15:59
2005.08.21
Классы


1-1122987824
webpauk
2005-08-02 17:03
2005.08.21
Иконка из Hinstance


4-1120060152
Alex_Korn
2005-06-29 19:49
2005.08.21
Время создания ключа в реестре


10-1099904482
Marina_Sm
2004-11-08 12:01
2005.08.21
COM