Это связано с тем, что дескриптор окна, связанный с кнопкой панели задач, является дескриптором окна, принадлежащим объекту Application
, а не дескриптором окна вашей основной формы.
В более поздних версиях Delphi вы будете писать Application.MainFormOnTaskBar := True
в своем файле .dpr, и это изменит поведение так, чтобы вместо этого кнопка панели задач была связана с вашей основной формой. Я считаю, что MainFormOnTaskBar
был представлен в Delphi 2007.
Переход на современную версию Delphi является идеальным способом решения проблемы. Если вы не можете этого сделать, вам нужно будет обойти код VCL, чтобы убедиться, что дескриптор окна основной формы связан с кнопкой панели задач. Это вряд ли будет легкой работой. По сути, вы платите цену за продолжение разработки с помощью инструментов, которые давно устарели.
Как указывает Реми, для достижения минимума не требуется много взлома. Измените стиль окна Application
, чтобы удалить стиль WS_EX_APPWINDOW
, и пусть основная форма переопределит метод CreateParams
, чтобы установить для его окна-владельца значение NULL
, т.е. Params.WndParent := 0
.
Я подозреваю, что поведение будет не таким гладким, как с современным приложением VCL. Например, VCL был изменен, чтобы уменьшить количество воссоздания окна, которое он делает, что более важно теперь, когда главное окно связано с кнопкой панели задач.