ActiveX弹出对话窗口隐藏了来自任务列表的IE

时间:2011-02-16 12:56:09

标签: delphi activex delphi-7 internet-explorer-6

这似乎只发生在IE6中

我有一个用Delphi 7编写的activex表单。在IE6中的activex控件中打开的对话窗口显示在任务栏上 - 用户(出于某种原因)不希望对话框显示在任务栏中。

所以我将对话框的borderStyle设置为bsToolwindow。这隐藏了任务栏中的对话框,但也有(侧面)效果将IE隐藏在Windows中的任务列表中,这意味着如果您选中,则无法< alt> Tab返回IE。

问题:如何隐藏任务栏中的activex弹出对话框,但仍然在任务列表中列出了IE6?

1 个答案:

答案 0 :(得分:0)

将表单的所有者窗口设置为activex表单(或者可能是ie窗口)。你可以实现这个f.i.通过在创建表单并覆盖实例化表单的CreateParams时将activex表单作为所有者组件传递:

// in the activex form's unit
procedure TActiveFormX.Button1Click(Sender: TObject);
var
  f: TForm;
begin
  f := TForm1.Create(Self);
  f.BorderStyle := bsToolWindow;
  f.Show;
end;

// in the dialog unit
type
  TForm1 = class(TForm)
  private
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  [...]

[...]
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := TCustomForm(Owner).Handle;
end;