一个关于Timer控件的问题。在线等!

fishgee 2003-08-20 08:03:17
小弟现在编写一个关于语音卡的程序,在拨号及等待时需用到Timer控件,以前没用过,看帮助写的也不详细,那位兄台能给几个关于这个控件的例子,谢谢先~
...全文
27 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiflower 2003-08-20
  • 打赏
  • 举报
回复
原因在于你的 CallUser 调用了拨号函数正在拨号的时候,拨号还未完成,CallUser 就已经返回了。该拨号函数一定是异步的吧?
应该等拨号完成后返回,而不是拨号函数执行后返回
fishgee 2003-08-20
  • 打赏
  • 举报
回复
1.程序是不是顺序执行呢,即执行完前面的calluser再执行后面的Next,如果是这样,似乎没有必要加Result
2.用timer也可以,怎么用呢?
nhdj 2003-08-20
  • 打赏
  • 举报
回复
就是说如果你没有执行到result:=1,那么调用程序下面的代码就不会执行,这样子就可以了
nhdj 2003-08-20
  • 打赏
  • 举报
回复
对,非常正确

不过你的过程可以改成函数(function),然后在函数的最后一行加个result:=1
在click中等待返回值,这样就可以等函数运行完毕后在运行下一个了

用timer也可以
fishgee 2003-08-20
  • 打赏
  • 举报
回复
enable:=true,定时器开始工作,时间到触发ontimer事件,执行该事件中所写的代码,是这样的吗?
nhdj 2003-08-20
  • 打赏
  • 举报
回复
就是啊,这个很简单,
1:enabled 是不是让有下面的功能,false的时候是关闭的
2:interval:=1000,就是每1秒就执行一遍ontimer中的代码,事件中的代码根据需要写就行了

别人就是在怎么说也没什么变化了,结贴吧
后面的兄弟不要抢了,偶最近急缺分用
fishgee 2003-08-20
  • 打赏
  • 举报
回复
具体说就是要循环通知一个用户表中的用户,我把表中当前记录的各属性值读到窗体上的EDIT中,然后调用一个电话通知的procedure(calluser),再使表的指针指向下一条记录。但是这样做不行,还在通知第一个用户时窗体上的EDIT显示的已经是最后一条记录的各属性值,该怎么处理呢?
代码如下:
procedure TForm7.Button1Click(Sender: TObject);
begin
with adotable1 do
begin
disablecontrols;
try
first;
while not EOF do
begin
edit1.Text:=fieldbyname('儿童编号').AsString;
edit2.Text:=fieldbyname('儿童名').AsString;
edit3.Text:=fieldbyname('家长名').AsString;
edit4.Text:=fieldbyname('主要电话').AsString;
dialnum:=edit4.Text;
calluser;
Next;
end;
finally
enablecontrols;
end;
end;
end;
procedure CallUser();
var i:Integer;
begin
Form7.panel5.Caption:='拨号中...';
TV_SetDTMFSendSpeed(i,2);
ptmp:=pchar(Dialnum);
TV_StartDial(i,ptmp);
cs[i]:=WS_DIALING;
end;
注:TV_SetDTMFSendSpeed(i,2)、TV_StartDial(i,ptmp)是两个语音卡的库函数,作用分别是设置接收DTMF码的速度和开始拨号
huojiehai 2003-08-20
  • 打赏
  • 举报
回复
用法很简单,就一个事件(OnTimer),在事件中写你的代码就可以了
enable := true;开始工作
Interval设置重得执行的时间,默认为1000(1秒)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧