子窗体显示在任务栏时,

procedure Tfrm_SendSmartMsg.CreateParams(var Params: TCreateParams);

begin

  inherited;

  Params.WndParent := 0;

end;

这时子窗体会在任务栏有单独的按钮,如果这时这个子窗体上又要加一个弹出窗体,如果是普通窗体会把整个应用程序激活,而导致这个子窗体跑到后面去。

把下面一句加到这个弹窗中可解决。

procedure Tfrm_MonthCalender.CreateParams(var Params: TCreateParams);

begin

  inherited;

  Params.ExStyle := Params.ExStyle or WS_EX_NOACTIVATE;       //不会获取焦点

  Params.WndParent := GetDesktopWindow;                       //不会激活应用程序,但会在任务栏显示

Params.Style := Params.Style or WS_POPUP; //加了这一句后不会在任务栏显示

end;