关于delphi中Ttimer的问题

varForm2:TForm2;len:integer;i:integer=0;implementation{$R*.dfm}procedureTForm2.Button... var
Form2: TForm2;
len:integer;
i:integer=0;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
progressbar1.Position:=0;
richedit2.Lines.Clear;
timer1.Enabled:=true;
label1.Caption:='正在拷贝数据,请稍等...' ;
label1.Visible:=true;
i:=0

end;

procedure TForm2.FormCreate(Sender: TObject);
begin
richedit1.Lines.LoadFromFile('E:\编程\据说是世界编程大赛第一名写的程序.txt');
len:=length(richedit1.Text);
end;

procedure TForm2.Timer1Timer(Sender: TObject);
var
part_len:integer;
begin
part_len:=len div 100;
richedit2.Text:=copy(richedit1.Text,i,part_len);
i:=i+part_len;
progressbar1.Position:=progressbar1.Position+1;
if i>len then
begin
timer1.Enabled:=false;
label1.Caption:='数据拷贝完毕';
end;
end;

end.

我想知道:
1.timer是怎么工作的?
2.i为什么会大于len呢,part_len不是已经除以100了吗?应该永远小于len才对啊?
展开
 我来答
maodrc
2009-05-02 · TA获得超过3289个赞
知道小有建树答主
回答量:1090
采纳率:79%
帮助的人:1182万
展开全部
1: Timer 有个这个属性,Interval , 是毫秒数,这个程序估计设计的是等于1000的,就是当 timer1.Enabled:=true; 的时候,每隔1秒就会调用Timer1Timer函数 2: 这个程序设计的思路是把一个文件读入,然后分100份,copy到 richedit2中,在copy过程中做了一个进度条. 每隔一段时间(Timer 的Interval 值)就复制一点,同时进度条前进一步, , part_len 是 总长度len的1/100, i 初始为0 ,每次加上 part_len,也就是说大概 Timer1Timer执行100次的时候, 满足 if i>len then 条件, Timer控件停止.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式