Jak dodać ikonę programu do Traya. ( ikonka obok zegara Windows )
1. Do sekcji private dodaj takie pozycje:
IconNotifyData: TNotifyIconData; procedure WndProc(var Msg: TMessage); override;
2. Teraz w OnCreate wpisz taki oto kod:
with IconNotifyData do begin hIcon := Application.Icon.Handle; uCallbackMessage := WM_USER + 1; cbSize := SizeOf(IconNotifyData); Wnd := Handle; uID := 100; uFlags := NIF_MESSAGE + NIF_ICON+NIF_TIP; end; // Kopiujemy tytuł aplikacji jako "dymek" StrPCopy(IconNotifyData.szTip, Application.Title); // Dodajemy ikonę do traya Shell_NotifyIcon(NIM_ADD, @IconNotifyData);
Następnie uzupełnij procedurę "WndProc" w taki oto sposób:
procedure TMainFrm.WndProc(var Msg: TMessage); var p: TPoint; begin { Ta procedura służy do przechwytywania komunikatów po naciśnięciu przycisku w obrębie ikony. } //Jezeli nacisnieto prawym przyciskiem myszy if (Msg.Msg=WM_USER+1) and (Msg.lParam = WM_RBUTTONDOWN) then begin //Nastepuje pobranie pozycji kursora myszki GetCursorPos(p); //i wyswietlenie menu TrayMenu.Popup(p.x, p.y); end; //Jezeli nacisnieto lewy przycisk nastepuje wyswietlenie //formy if Msg.LParam = WM_LBUTTONDOWN then MainFrm.Show; inherited; end;
Dodatkowo przy zamykaniu programu możesz dopisać linie:
Shell_NotifyIcon(NIM_DELETE, @IconNotifyData);
Usuwa ona ikonę z Tray'a.
Zobacz też:
9 komentarzy
w OnClose formy
Action := caNone;
Application.ShowMainForm := False;
ShowWindow(Handle, SW_HIDE);
albo z CoolTrayIcon:
Action := caNone;
CoolTrayIcon1.HideMainForm;
A jak zrobic aby po nacisniciu na krzyżyk(zamknij) program sie zamknoł a ikona w trayu była i jak na nią nacisne to mi sie włączy forma?
Wpisz przed GetCursorPos(p);
SetForegroundWindow(Handle) mi działa
Nie wiem jak pod innymi winami, ale mi pod XP i ten kod i CoolTrayIcon działają źle. W momencie kiedy wyskoczy PopupMenu po kliknieciu na ikonce w Trayu, to znika tylko jeśli kliknę na formę, lub wybiorę pozycję z tego PopupMenu.
W innych aplikacjach, "fabrycznych", po kliknięciu na pulpit, czy gdziekolwiek ten Popup znika.
Wie ktoś jak to zrobić?
mi ten kod nie dziala, to z kad moge wziasc ten CoolTrayIcon
"Prościej jest użyć komponentu: CoolTrayIcon ;> "
Mi to nie działa ten komponent, gdy rozpakowuje package, wyświetla mi komunikat: "Cannot find resource file: <>. Recreated." OCO TU CHODZI?!?!?!?
Próbowałem znaleźć ten plik w internecie :/, ale ... znalazłem :? Dodałem to tego wszystkiego, wszystko OK, nie wyświetla komunikatu, ale nie moge kliknąć przycisku INSTALL, zablokowany.
POMOCY