col*_*lin 8 forms delphi modal-dialog
我有一个项目,主要形式和其他形式.当应用程序加载时,它需要执行一些任务并在主窗体顶部以模式形式显示结果.我遇到的问题是,如果我调用函数来执行任务/创建并在主窗体onshow事件中显示模态窗体,则会出现模态窗体,但主窗体不会直到模态窗体关闭,这是我期望发生什么.为了解决这个问题,我在主表单上添加了一个计时器,并在主表单onshow事件上启动它,计时器调用该函数来执行任务/创建并显示模态表单.所以现在主要形式出现在模态形式之前.
但是,我不认为这是最好的解决方案,并且想知道是否有人能提供更好的解决方案.
我使用的是Delphi 7
科林
Dav*_*nan 10
一个常用的选项是在表单中发布消息OnShow.像这样:
const
WM_SHOWMYOTHERFORM = WM_USER + 0;
type
TMyMainForm = class(TForm)
procedure FormShow(Sender: TObject);
protected
procedure WMShowMyOtherForm(var Message: TMessage); message WM_SHOWMYOTHERFORM;
end;
...
procedure TMyMainForm.FormShow(Sender: TObject);
begin
PostMessage(Handle, WM_SHOWMYOTHERFORM, 0, 0);
end;
procedure TMyMainForm.WMShowMyOtherForm(var Message: TMessage);
begin
inherited;
with TMyOtherForm.Create(nil) do begin
try
ShowModal;
finally
Free;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)