加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi中延迟执行

发布时间:2020-12-15 09:42:53 所属栏目:大数据 来源:网络整理
导读:调用程序结束后是否可以延迟启动程序? procedure StartLoop;begin DoSomething;end;procedure FormCreate(...);begin if ParamStr(1)='start' then StartLoop;end; StartLoop将在FormCreate中调用,FormCreate将等待,并阻止进一步执行FormCreate本身,以及进
调用程序结束后是否可以延迟启动程序?

procedure StartLoop;
begin
  DoSomething;
end;

procedure FormCreate(...);
begin
  if ParamStr(1)='start' then StartLoop;
end;

StartLoop将在FormCreate中调用,FormCreate将等待,并阻止进一步执行FormCreate本身,以及进一步执行它(FormShow等)之后执行,并且在StartLoop结束之前不会显示表单.

我需要等到FormCreate结束,然后运行StartLoop(不使用线程).

解决方法

最简单的方法是使用计时器.

让您在设计时在窗体上创建具有所需周期设置的DelayTimer和Enabled = False(您也可以动态创建它).为它分配事件处理程序:

procedure TFormXX.DelayTimerTimer(Sender: TObject);
  begin
     DelayTimer.Enabled := False;   // works only once
     StartLoop;
  end;

在表单初始化例程启动此计时器:

procedure FormCreate(...);
 begin
   if ParamStr(1)='start' then  
       DelayTimer.Enabled := True; 
 end;

也许您想稍后启动计时器,例如 – 如果您的应用程序在创建期间执行某些连续操作,则在OnShow中启动计时器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读