Главная страница
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.029 c
14-1122396313
БарЛог
2005-07-26 20:45
2005.08.21
Различные способы вычисления 2х2


3-1121250621
TAN_K
2005-07-13 14:30
2005.08.21
Отчет QuickRep


1-1122624766
Solo_Mes
2005-07-29 12:12
2005.08.21
Закрыть приложение


10-1100068864
AlexGof
2004-11-10 09:41
2005.08.21
1С как OLE не работает из Web-приложения работающего на IIS ?


11-1105726128
chum
2005-01-14 21:08
2005.08.21
Работа со строками