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

Как спрятать форму Windows из панели задач без использования `WS_EX_TOOLWINDOW` в Delphi

Delphi , Компоненты и Классы , Кнопки

Статья: Сокрытие формы Windows из панели задач без использования WS_EX_TOOLWINDOW в Delphi

Вопрос о скрытии формы из панели задач является довольно распространенным среди разработчиков, работающих с Delphi. В частности, пользователи часто сталкиваются с необходимостью скрыть форму от пользователя, но при этом сохранить возможность минимизации и максимизации окна через системные кнопки. В данной статье будет рассмотрен способ решения этой задачи без использования стиля WS_EX_TOOLWINDOW, который позволяет убрать кнопку приложения в панели задач, но при этом сохраняет системное меню и кнопки для изменения размера окна.

Проблема

Разработчики, работающие с проектами на Delphi, сталкиваются с проблемой, когда необходимо скрыть форму из панели задач, но при этом не использовать стиль WS_EX_TOOLWINDOW, поскольку это приводит к сбоям в отображении скина формы. При этом важно сохранить возможность взаимодействия с системным меню и кнопками минимизации/максимизации окна.

Решение

Для решения данной проблемы можно использовать следующий подход:

  1. Отключение отображения формы в панели задач с помощью функции ShowWindow.
  2. Установка стиля окна, который исключает WS_EX_APPWINDOW, что также влияет на отображение в панели задач.
  3. В случае использования COM-сервера необходимо установить родительское окно для скрытой формы.

Пример кода на Object Pascal для Delphi 2006:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowWindow(Handle, SW_HIDE);
  SetWindowLong(Handle, GWL_EXSTYLE,
    GetWindowLong(Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW);
  // Установить родительское окно, если необходимо
  // SetWindowLong(Handle, GWL_HWNDPARENT, YourOwnerForm.Handle);
  ShowWindow(Handle, SW_SHOW);
end;

Важно отметить, что если форма является дочерней для другого окна, то Windows может автоматически отобразить кнопку в панели задач. В таком случае, необходимо явно указать родительское окно в параметрах создания формы:

procedure TfrmWord2Site.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := YourOwnerForm.Handle;
  Params.ExStyle := Params.ExStyle and not WS_EX_APPWINDOW;
end;

Также, начиная с Delphi XE (2010), можно использовать свойство Application.MainFormOnTaskbar, чтобы скрыть главную форму из панели задач:

program prog;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := False;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end;

После этого, в событии OnShow формы Form1 можно скрыть форму, используя функцию ShowWindow:

procedure TForm1.FormShow(Sender: TObject);
begin
  ShowWindow(Handle, SW_HIDE);
end;

Заключение

В данной статье был рассмотрен способ скрытия формы из панели задач в Delphi, не используя стиль WS_EX_TOOLWINDOW. Это позволяет сохранить функциональность системного меню и кнопок для изменения размера окна. Важно учитывать особенности проекта, в частности, наличие родительского окна, если форма является частью COM-сервера.

Приведенные примеры кода могут быть полезны для разработчиков, сталкивающихся с подобными задачами, и помогут им реализовать необходимую функциональность без потери в удобстве использования приложения конечными пользователями.

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

Статья описывает способы скрытия формы Windows из панели задач в программировании на Delphi без использования стиля `WS_EX_TOOLWINDOW`, сохраняя при этом возможности взаимодействия с системным меню и кнопками для минимизации и максимизации окна.


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

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




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


:: Главная :: Кнопки ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2024-12-27 00:09:24/0.0042219161987305/0