如何为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
相关产品推荐
相关产品推荐

