如果非模态显示,delphi启动窗体不会触发计时器事件

ros*_*mcm 2 delphi timer splash-screen non-modal

我编写了一个淡入淡出的表单,显示了一段时间,然后淡出.衰落是通过计时器实现的,该计时器也关闭表格.它工作正常.

我以模态方式显示表单,但我怀疑主表单在开始表单关闭之后才开始构建和显示.

然后我想,如果我以非模态方式显示表单并使用fsStayOnTop(即SplashForm.Show而不是SplashForm.ShowModal),那么只要显示启动表单,主表单就可以在启动表单后面初始化,这意味着应用程序已准备就绪当飞溅形式关闭时去.

然而,我发现计时器事件不再发生.也没有TApplication.OnIdle事件.是什么赋予了?

Mas*_*ler 5

你说这是一个闪屏.是否在程序启动期间显示,在您Application.Run;进入DPR之前?如果是这样,那么TApplication事件循环尚未启动,因此您将不会获得任何OnIdle事件.

  • @ user89691:您可以在调用Application.Run()之前显示非模态表单.在调用TForm.Show()之后,只需调用TForm.Update().只是不要依赖任何依赖于消息处理的功能,例如定时器,因为消息循环尚未运行. (2认同)