关于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才对啊? 展开
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才对啊? 展开
1个回答
展开全部
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控件停止.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询