You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Ensign 10中自建的TTimer组件创建onClick事件?

Ensign 10手动创建TTimer的OnTimer事件实现方法

首先纠正你现有代码里的两个致命问题:

  • Timer.OnTimer := true ; 错误:OnTimer是事件回调指针,不能赋值布尔值,必须指向一个符合签名的过程
  • Timer.Free ; 错误:创建后立刻释放定时器,导致它根本无法触发任何事件

以下是正确的实现步骤:

1. 声明并绑定事件处理过程

按照Ensign 10(兼容Delphi语法)的规则,先声明事件处理过程,再把它绑定到Timer的OnTimer属性:

{$FORM TForm2, Unit2.sfm}                                

uses
  Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

var
  Timer : TTimer ;

// 声明OnTimer事件处理过程,签名必须和TTimer.OnTimer一致
procedure WatchTimer(Sender: TObject);

procedure Form2Create(Sender: TObject);
begin
  Timer := TTimer.Create(Application);  
  Timer.Enabled := True ;
  Timer.Interval := 1000 ;                                 
  Timer.OnTimer := WatchTimer; // 将事件处理过程绑定到OnTimer属性
  Timer.Name := 'Watch';
end;

// 实现OnTimer事件的具体逻辑
procedure WatchTimer(Sender: TObject);
begin
  // 这里写定时器每1秒触发时要执行的代码
  // 示例:显示提示框
  ShowMessage('定时器已触发');
end;

2. 正确释放定时器资源

为了避免内存泄漏,需要在窗体销毁时释放定时器,添加窗体的OnDestroy事件处理:

procedure Form2Destroy(Sender: TObject);
begin
  // 先判断定时器是否已创建,再释放
  if Assigned(Timer) then
    Timer.Free;
end;

内容的提问来源于stack exchange,提问作者Ebrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 05:43:10