Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
-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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
1-1122895028
Arrows
2005-08-01 15:17
2005.08.21
Мигающая кнопка на панели задач


14-1122366942
Андрей Жук
2005-07-26 12:35
2005.08.21
Глюки при работе программы на многопроцессорной машине


14-1122472593
Burmistroff
2005-07-27 17:56
2005.08.21
Buffer overflow


3-1121203514
Максим
2005-07-13 01:25
2005.08.21
IBUpdateSQL и работа с ним ?


14-1122362835
VID
2005-07-26 11:27
2005.08.21
Привет





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский