Если я правильно понимаю, то ваша проблема в том, что когда появляется окно сообщения, ваша основная форма все еще невидима.
Если это так, то у вас есть два варианта:
- Не показывать свои
SubForm
из события OnShow
основной формы, но позже
- Не показывать сообщение сразу после возврата
ShowModal
, но в более позднее время
Для пункта 2 вы можете использовать аналогичный подход, как я предложил здесь , используя PostMessage
. Итак, ваш код будет выглядеть примерно так:
procedure TMainForm.FormShow(Sender:TObject);
begin
if (SubForm.ShowModal = mrOK) and bOption1 then
begin
PostMessage(Self.Handle, WM_SHOWMYDIALOG, 0, 0);
end;
end;
Затем обработчик WM_SHOWMYDIALOG
отображает фактическое сообщение. Этот подход может также работать для пункта 1, см. ain's answer .
PostMessage
отправляет сообщение в очередь сообщений вашего приложения, которое будет обработано после того, как основная форма станет видимой.