Форма как WS_EX_APPWINDOW и вызывающие модалы - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь создать форму со стилем WS_EX_APPWINDOW, но эта форма вызывает формы, которые являются модальными.

Итак, у меня есть следующая структура:

| MainForm
  |_FormEX_APPWINDOW (Called by MainForm)
      |_FormModal (Called by FormEX_APPWINDOW)

Таким образомMainForm и FormEX_APPWINDOW кажутся исполняемыми для пользователя по-разному, потому что на панели задач появляются два окна.

Именно этот эффект мне нужен и нужен.Потому что пользователь должен иметь возможность взаимодействовать с двумя формами «одновременно».То есть он может что-то обрабатывать в FormEX_APPWINDOW, возвращаться в MainForm и делать новые регистрации, пока FormEX_APPWINDOW заканчивает обработку.

Но если FormEX_APPWINDOW вызывает вспомогательную форму как модальную.Модал открывается в MainForm, а FormEX_APPWINDOW свернут до тех пор, пока модал не будет закрыт.

Как я могу решить эту проблему?

MainForm Calling FormEX_APPWINDOW

procedure TMainForm.Button1Click(Sender: TObject);
begin
  if not Assigned(FFormEX_APPWINDOW) then
    FFormEX_APPWINDOW := TFormEX_APPWINDOW.Create(Self);
  FFormEX_APPWINDOW.Show;
end;

CreateParams FormEX_APPWINDOW

procedure TFormEX_APPWINDOW.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := 0;
end;

FormEX_APPWINDOW, вызывающий модальный

procedure TFormEX_APPWINDOW.MenuItem1Click(Sender: TObject);
begin
  if not Assigned(FormModal) then
    FormModal:= TFormModal.Create(Self);
  FormModal.ShowModal;
end;

ПРИМЕЧАНИЕ: MainForm и FormEX_APPWINDOWоткрываются с помощью WindowState = wsMaximized.FormModal открывается с WindowState = wsNormal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...