Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Скрытие и Показ Иконки в Панели Задач: Применение CoolTrayIcon в VCL-Приложениях

Delphi , Рабочий стол , TrayBar

Вопрос пользователя заключается в том, как скрыть иконку приложения в панели задач (TaskBar) во время выполнения программы на языке Object Pascal (Delphi) с использованием компонента CoolTrayIcon. Пользователь столкнулся с проблемой, что код, который скрывал иконку в демонстрационном проекте CoolTrayIcon, не работал в его собственном приложении.

Описание проблемы

Пользователь использовал компонент CoolTrayIcon версии 4.4.0 для работы с иконками в системном трее и панели задач. В демонстрационном проекте CoolTrayTest, при нажатии на кнопку, выполнялся код, который скрывал иконку в панели задач. Однако, при попытке использовать тот же код в собственном VCL-приложении, иконка не скрывалась.

Решение проблемы

Для скрытия иконки в панели задач необходимо понимать, к какому окну принадлежит иконка. Если свойство Application.ShowMainFormOnTaskbar установлено в False, то иконка принадлежит скрытому окну Application. В случае, если свойство установлено в True (что является стандартным для современных проектов Delphi), иконка принадлежит главному окну приложения Application.MainForm.

Чтобы скрыть/показать иконку, нужно скрыть/показать окно, которому она принадлежит. Альтернативный способ — использовать методы DeleteTab и AddTab интерфейса ITaskbarList из Win32 API для управления иконками в панели задач.

Пример кода

Для демонстрации, рассмотрим пример кода, который скрывает иконку в панели задач:

procedure TForm1.btnTestClick(Sender: TObject);
var
  T: System.Win.Taskbar.TWinTaskbar;
begin
  T := System.Win.Taskbar.TWinTaskbar.Create;
  try
    if not FTaskBarButtonIsHidden then
    begin
      IsOK := T.DeleteTab(Self.Handle);
      // При успешном удалении иконки, устанавливаем флаг скрытия
      FTaskBarButtonIsHidden := IsOK;
    end
    else
    begin
      IsOK := T.AddTab(Self.Handle);
      // При успешном добавлении иконки, сбрасываем флаг скрытия
      FTaskBarButtonIsHidden := not IsOK;
    end;
  finally
    T.Free;
  end;
end;

В этом примере FTaskBarButtonIsHidden — это булево поле, которое отслеживает состояние иконки в панели задач.

Важные замечания

Изменение свойства ShowMainFormOnTaskbar в событии OnCreate формы происходит слишком поздно, так как окна уже созданы. Лучше установить это свойство в файле DPR перед созданием окон.

Изменение свойства ShowMainFormOnTaskbar может иметь побочные эффекты, так как многие интеграции VCL с операционной системой зависят от этого свойства.

Заключение

Пользователь успешно решил проблему, используя методы DeleteTab и AddTab для управления отображением иконки в панели задач, и теперь может скрывать и показывать её по желанию.

Создано по материалам из источника по ссылке.

Пользователь столкнулся с проблемой скрытия иконки приложения в панели задач (TaskBar) с использованием компонента CoolTrayIcon в VCL-приложении на Delphi, и ищет решение этой проблемы, которая возникла при переносе кода из демонстрационного проекта.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TrayBar ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:01:09/0.0031249523162842/0