Я пытаюсь создать форму со стилем 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.