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

Скрытие основного окна в Delphi без потери иконки в панели задач

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

Вопрос о скрытии основного окна в приложении Delphi без потери иконки в панели задач является довольно распространенным. Пользователь, использующий Delphi XE6, столкнулся с проблемой, когда при скрытии основного окна исчезала и иконка приложения в панели задач. Это происходит потому, что Windows-приложениям предоставляется только один виртуальный рабочий стол (Taskbar Button), который по умолчанию связан с главным окном приложения.

Обходной путь

Один из способов обойти данное ограничение - создание дополнительного окна, которое будет видно пользователю панели задач, в то время как основное окно будет скрыто. Вот шаги, как это можно сделать:

  1. Создание окна с собственным Taskbar-элементом Дополнительное окно можно настроить так, чтобы оно имело собственный Taskbar-элемент. Для этого нужно изменить стиль окна, добавив WS_EX_APPWINDOW.

    pascal procedure TWorkForm.CreateParams(var Params: TCreateParams); begin inherited; Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; end;

  2. Динамическое создание второго окна Создайте второе окно непосредственно перед тем, как переключиться на него. Это обеспечит появление нового Taskbar-элемента.

  3. Скрытие основного окна После создания второго окна можно скрыть основное окно, и Taskbar-элемент, связанный с ним, также исчезнет.

  4. Возможность переключения обратно Если требуется возможность возврата к основному окну, вызовите метод Show основного окна вместо его закрытия.

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

  • Если второе окно сложное и требует времени для создания, его можно создать в скрытом режиме, а затем показать, когда создание будет завершено.
  • Обеспечьте корректное завершение работы основного окна, например, при закрытии второго окна.

Пример кода

unit ULoginForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TLoginForm = class(TForm)
    BLogIn: TButton;
    procedure BLogInClick(Sender: TObject);
  private
  public
  end;

var
  LoginForm: TLoginForm;
  LoggingOut: Boolean;

implementation

uses Unit2;

{$R *.dfm}

procedure TLoginForm.BLogInClick(Sender: TObject);
begin
  // Создание второго окна
  Application.CreateForm(TWorkForm, WorkForm);
  // Скрытие основного окна
  Self.Hide;
  // Очистка полей ввода и т.д.
end;

unit UWorkForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TWorkForm = class(TForm)
    BLogOut: TButton;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure BLogOutClick(Sender: TObject);
  private
  public
  end;

var
  WorkForm: TWorkForm;

implementation

uses Unit1;

{$R *.dfm}

procedure TWorkForm.BLogOutClick(Sender: TObject);
begin
  LoggingOut := True;
  Close;
end;

procedure TWorkForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

procedure TWorkForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if not LoggingOut then
  begin
    LoginForm.Show;
    LoginForm.Close;
    CanClose := True;
  end
  else
  begin
    LoginForm.Show;
    LoggingOut := False;
    CanClose := True;
  end;
end;

end.

Заключение

Таким образом, можно скрыть основное окно в Delphi-приложении, не теряя при этом иконку в панели задач, создав дополнительное окно с собственным Taskbar-элементом и переключаясь между ними по мере необходимости.

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

Сокрытие основного окна в приложении Delphi без потери иконки в панели задач достигается за счет создания дополнительного окна, которое будет отображаться вместо скрытого главного окна, сохраняя тем самым видимость приложения в панели задач.


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

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




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


:: Главная :: TaskBar ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-25 10:05:41/0.016257047653198/0