Скрытие иконки приложения на панели задач в Delphi под Windows XP
При разработке приложений на Delphi, иногда возникает необходимость скрыть иконку приложения на панели задач, особенно это актуально для приложений, работающих в системном трее. В данной статье мы рассмотрим, как решить эту задачу, основываясь на вопросе пользователя, который столкнулся с проблемой после перехода с Delphi 6 на Delphi XE2.
Проблема
Пользователь столкнулся с проблемой, что после перехода с Delphi 6 на Delphi XE2, его приложение, которое ранее корректно скрывалось в системном трее и не отображалось на панели задач, начало отображаться на панели задач в Windows XP при открытии дополнительных форм.
Решение
Для решения проблемы, необходимо изменить подход к управлению видимостью форм и их владельцами. В Delphi есть свойство MainFormOnTaskBar, которое определяет, будет ли основная форма отображаться на панели задач. Также важно правильно управлять владельцами окон, чтобы они не отображались на панели задач.
Шаг 1: Установка свойства MainFormOnTaskBar
Сначала установите свойство MainFormOnTaskBar в False в файле dpr, чтобы основная форма не отображалась на панели задач.
Application.MainFormOnTaskBar := False;
Шаг 2: Сокрытие и показ основной формы
Когда вы хотите скрыть основную форму, используйте MainForm.Hide, а для показа - MainForm.Show.
Шаг 3: Управление владельцами форм
Установите свойство PopupParent для вспомогательных форм, чтобы они были владельцами основной формы. Это предотвратит их отображение на панели задач.
Шаг 4: Удаление кода для скрытия окна от панели задач
Удалите ненужный код, который пытается скрыть окно от панели задач, например, через интерфейс ITaskbarList.
Шаг 5: Обработка событий окна
Для управления поведением приложения при минимизации и восстановлении окна, можно переопределить обработчик сообщения WM_SYSCOMMAND.
procedure TMainForm.WMSysCommand(var Msg: TWMSysCommand);
begin
if (Msg.CmdType and $FFF0)=SC_MINIMIZE then
begin
Hide;
exit;
end;
inherited;
end;
Пример минимальной программы
program MainFormHiding;
uses
Forms, StdCtrls, Windows;
var
MainForm, OtherForm: TForm;
Button: TButton;
type
TEventHandlerClass = class
class procedure ToggleTaskbarButton(Sender: TObject);
end;
class procedure TEventHandlerClass.ToggleTaskbarButton(Sender: TObject);
begin
if IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_HIDE)
else
ShowWindow(Application.Handle, SW_SHOW);
end;
begin
Application.MainFormOnTaskbar := False;
// Инициализация основной и вспомогательной форм
// ...
OtherForm.PopupParent := MainForm;
// Настройка кнопки для переключения отображения на панели задач
// ...
Application.Run;
end.
Заключение
Изменение владельцев форм и правильное управление их видимостью позволяет скрыть иконку приложения на панели задач в Windows XP, что особенно полезно для приложений, работающих в системном трее. Следуя этим шагам, вы сможете достичь желаемого поведения вашего приложения.
Описание: Устранение отображения иконки приложения на панели задач в среде Delphi для Windows XP.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.