DELPHI XE-如何在mdi应用程序启动时显示对话框窗体?
我们有Delphi XE MDI项目。我们需要在MDI主窗体创建并显示之后,在应用程序启动时打开一个对话框窗体(具有bsDialog属性的窗体)。您可以向窗体的DELPHI XE-如何在mdi应用程序启动时显示对话框窗体?,delphi,delphi-xe,Delphi,Delphi Xe,我们有Delphi XE MDI项目。我们需要在MDI主窗体创建并显示之后,在应用程序启动时打开一个对话框窗体(具有bsDialog属性的窗体)。您可以向窗体的OnShow事件添加一些内容,但该对话框将在主窗体实际可见之前显示。因此,您需要延迟对话框的显示,直到主窗体实际可见为止 我确信还有其他方法可以做到这一点,但我向TApplication.OnIdle添加了一个处理程序,并在那里显示了对话框。显然,您需要在主窗体中使用布尔标志,以确保对话框只显示一次。使用TApplicationEvent
OnShow
事件添加一些内容,但该对话框将在主窗体实际可见之前显示。因此,您需要延迟对话框的显示,直到主窗体实际可见为止
我确信还有其他方法可以做到这一点,但我向TApplication.OnIdle
添加了一个处理程序,并在那里显示了对话框。显然,您需要在主窗体中使用布尔标志,以确保对话框只显示一次。使用TApplicationEvents
来解决Delphi缺少多播事件的问题通常会更干净
procedure TMainForm.ApplicationIdle(Sender: TObject; var Done: Boolean);
begin
if not FStartupCalled then begin
FStartupCalled := True;//FStartupCalled is a member field of TMainForm
DoApplicationStartup;//this would show your dialog
end;
end;
你可以这样做
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Show; // iff really necessary
with TForm2.Create(nil) do try
ShowModal;
finally
Free;
end;
Application.Run;
end.
您是否尝试过在主窗体的OnShow事件中创建和显示对话框?你应该在你的问题中解释你尝试了什么以及为什么没有成功。这似乎是重复的:当然。我试过OnShow、OnActivate甚至OnCreate,都没有结果。您已经接受了一个演示如何显示模态表单的答案。在你的问题中,你没有提到这是你想要的。请花一分钟时间提问,明确说明您的要求。这样可以避免你和其他人浪费时间。