我创建了一个应用程序,其中主窗体在主窗体的 FormShow 事件上调用子窗体。显示子表单并提供两个选项可供选择。如果选择子表单上的第一个选项,则会显示一条消息,然后将显示主表单。现在,当应用程序第一次运行时,在子表单上选择选项后将显示 Meassage。但我想以主窗体作为背景显示消息。所以任何解决方案。下面是 FormShow 代码。
Procedure TMainForm.FormShow(Sender:TObject);
begin
if (SubForm.ShowModal = mrOK) and bOption1 then
begin
ShowMessage('Enter the value');
end;
end;
最佳答案
如果我理解正确,那么您的问题是,当消息框显示时,您的主窗体仍然不可见。
如果是这种情况,那么您有两个选择:
- 不要在主表单的
OnShow
事件中显示您的SubForm
,而是稍后显示 - 不要在
ShowModal
返回后立即显示消息,而是稍后显示
对于第 2 点,您可以使用我建议的类似方法 here ,使用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
将一条消息发布到应用程序的消息队列,该消息将在主窗体变得可见后进行处理。
关于delphi - 在主窗体的 OnShow 中显示模态窗体时,主窗体不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7094873/