Board logo

Subject: TcnTimerList如何重定义onTimer [Print This Page]

Author: old_cnpack    Time: 2008-8-30 18:00     Subject: TcnTimerList如何重定义onTimer

我使用了TcnTimerList新建多个计时器,现在想用 自定义函数 处理到时,却不知道怎么做
   下面的代码 编译总出错
unit MainForm;
interface
。。。
。。。
type
  TForm1 = class(TForm)
。。。
  procedure dao(Sender:TObject;PCNum:integer);

。。。
。。。

implementation
。。。
//需要执行的操作
procedure TForm1.dao(Sender:TObject;PCNum:integer);
begin
  ShowMessage(IntToStr(PCNum));
end;

procedure createTimerList();
var i:Integer;
begin
  for I := 1 to config1.PcNumber do
    begin
      Form1.ctl1.Items.Add;
      Form1.ctl1.Items.Enabled := False;
      Form1.ctl1.Items.OnTimer := Form1.dao(self,i) ;//接管。编译出错
    end;
end;
Author: Passion    Time: 2008-8-30 21:43

赋值时,不用写括号与Self吧,后者是调用。
Author: old_cnpack    Time: 2008-8-31 00:24

Form1.ctl1.Items.OnTimer := Form1.dao(self,i) ;//接管。编译出错
----------------------
那这一句,我应该怎么写呢
怎么把 i 传递过去呢
Author: Passion    Time: 2008-8-31 10:53

I不是在这儿传的,是TCnTimerItem自身在TCnTimerCollection中的Index吧。
Author: old_cnpack    Time: 2008-8-31 11:06

这个I是 我自己的参数,用来确定是 哪个机器的 定时器亚,
Author: Passion    Time: 2008-8-31 11:30

对哇,是按顺序加的,I也正好是TCnTimerItem自身在TCnTimerCollection中的Index吧。
Author: old_cnpack    Time: 2008-8-31 11:53

是这样,我初始化了(在for循环里动态初始化)好几个tcntimerlist 的item,这样当 一个item到时,我怎么知道是哪个 item呢?
? ?如果用item的index,我在源码里 也没发现 可以在ontimer()里 确定这个item的index的方法
? ?所以我想,在初始化item时,就把 item绑定的 机器号传到 它的ontimer里,这个 item的ontimer后,可以很简单 知道是哪个 机器?

[ 本帖最后由 old_cnpack 于 2008-8-31 12:12 编辑 ]
Author: Passion    Time: 2008-8-31 14:26

Sender 是 TCnTimerItem,强制转换后它的Index属性就是。
Author: old_cnpack    Time: 2008-8-31 14:32

能不能给点 代码?谢谢
Author: Passion    Time: 2008-8-31 14:33

也可以在CnTimerList的OnTimer事件里头直接写,参数中有Index的。
Author: old_cnpack    Time: 2008-8-31 14:53

也可以在CnTimerList的OnTimer事件里头直接写,参数中有Index的。
------------------------------
谢谢,我明白了。CnTimerList的OnTimer 也可以 用在他的 item上




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0