Понадобилось убирать программу в трэй при запуске. Немного поискал в сети и обнаружил замечательный компонент TTrayIcon
Решение №1
Добавляем на форму TTrayIcon и настраиваем
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TfHTTPServer.AdjustTrayIcon; begin //------------ ICON TrayIcon.Icons := ilTrayIcon; FMyIcon := TIcon.Create; FMyIcon.LoadFromFile(ExtractFilePath(Application.ExeName) + 'favicon.ico'); TrayIcon.Icon.Assign(FMyIcon); TrayIcon.Icons.AddIcon(FMyIcon); TrayIcon.Hint := 'HTTPServer - Double click to open'; TrayIcon.BalloonTitle := 'Restoring the window.'; TrayIcon.BalloonHint := 'Double click the system tray icon to restore the window.'; Application.ShowMainForm := False; TrayIcon.BalloonFlags := bfInfo; end; |
Добавляем данную процедуру в FormCreate
Также нужна процедура на минимизацию
Добавляем TApplication и обрабатываем событие OnMinimize
1 2 3 4 5 6 7 8 9 10 11 12 |
procedure TfHTTPServer.ApplicationEventsMinimize(Sender: TObject); begin TrayIcon.Visible := True; Application.ShowMainForm:=False; ShowWindow(Handle, SW_HIDE); //TrayIcon.Animate := True; //TrayIcon.ShowBalloonHint; end; |
Дабл клик трэй иконки обрабатываем следующим образом
1 2 3 4 5 6 7 8 9 10 11 |
procedure TfHTTPServer.TrayIconDblClick(Sender: TObject); begin { Hide the tray icon and show the window, setting its state property to wsNormal. } TrayIcon.Visible := False; Show(); WindowState := wsNormal; Application.BringToFront(); end; |
Решение №2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Procedure TfHTTPServer.Tray(n:Integer;Icon:TIcon); Var Nim:TNotifyIconData; begin With Nim do Begin cbSize:=SizeOf(Nim); //размер структуры Wnd:=Self.Handle; //хендл формы uID:=1; uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP; //флаги hicon:=Icon.Handle; //хендл иконки передаваемой в качестве параметра szTip :='ToolTip'; //подсказка End; Case n OF 1: Shell_NotifyIcon(Nim_Add,@Nim); //дабавляем иконку в трей 2: Shell_NotifyIcon(Nim_Delete,@Nim); //удаляем 3: Shell_NotifyIcon(Nim_Modify,@Nim); //изменяем существующую End; end; |