Всплывающее диалоговое окно ActiveX скрывает IE от списка задач - PullRequest
0 голосов
/ 16 февраля 2011

Это, кажется, происходит только в IE6

У меня есть форма activex, написанная на Delphi 7. На панели задач отображается диалоговое окно, открытое из элемента управления activex в IE6 - пользователи (по какой-то причине) не хотят, чтобы диалог отображался на панели задач.

Поэтому я установил в диалоговом окне borderStyle значение bsToolwindow. Это скрывает диалог от панели задач, но также имеет (побочный) эффект скрытия IE от списка задач в окнах, что означает, что вы не можете перейти обратно в IE, если вы удалили вкладку.

Вопрос: Как скрыть всплывающее диалоговое окно activex из панели задач, но в списке задач все еще есть IE6?

1 Ответ

0 голосов
/ 16 февраля 2011

Установите для окна владельца вашей формы форму activex (или, возможно, окно ie).Вы можете добиться этого, передав форму activex в качестве компонента-владельца во время создания формы и переопределив CreateParams созданной формы:

// 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;
...