С Delphi 2007/2009 VCL изменил свое поведение в отношении родителя формы. В Delphi 1-2006 родителем формы было скрытое окно приложения (Application.Handle). В Delphi 2007/2009 родитель форм является основной формой, а родитель главной формы - рабочий стол.
Если вы хотите изменить это, вы можете либо изменить строку * .dpr Application.MainFormOnTaskbar
на False
, что возвращает старое поведение, но также делает ваше приложение странным в Vista и Windows 7. Или вы можете переопределить виртуальный метод CreateParams во всех ваших немодальных дочерних формах и установите поле Params.WndParent
для рабочего стола (HWND_DESKTOP
) или все еще существующее Application.Handle
.
type
TMyChildForm = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := Application.Handle;
end;