我是初学者,我想用两个button(一个启动,一个停止),一个image,一个timer来实现用button控制
timer实现连续在image里滚动显示一幅图片,现在能滚动显示但是两个button却不能正常工作,我的代码:
procedure form1.button1click(Sender: TObject);
begin
timer1.Enabled := True;
end; procedure form1.button2click(Sender: TObject0;
begin
timer1.Enabled := False;
end; procedure form1.timer1Timer(Sender: TObject);
var i : Integer;
begin
if timer1.Enabled := True then
for i := 0 to step do
begin
BitBlt(Image1.Canvas.Handle, 179 - i, 62, i, 56, Bitmap.Canvas.Handle, 0, 0, srccopy);
Application.ProcessMessages;
Image1.Invalidate;
Sleep(50);
end;
end;
Bitmap中已放入一幅图片,在线等!谢谢
timer实现连续在image里滚动显示一幅图片,现在能滚动显示但是两个button却不能正常工作,我的代码:
procedure form1.button1click(Sender: TObject);
begin
timer1.Enabled := True;
end; procedure form1.button2click(Sender: TObject0;
begin
timer1.Enabled := False;
end; procedure form1.timer1Timer(Sender: TObject);
var i : Integer;
begin
if timer1.Enabled := True then
for i := 0 to step do
begin
BitBlt(Image1.Canvas.Handle, 179 - i, 62, i, 56, Bitmap.Canvas.Handle, 0, 0, srccopy);
Application.ProcessMessages;
Image1.Invalidate;
Sleep(50);
end;
end;
Bitmap中已放入一幅图片,在线等!谢谢
var i : Integer;
begin
if timer1.Enabled := True then
for i := 0 to step do
begin
BitBlt(Image1.Canvas.Handle, 179 - i, 62, i, 56, Bitmap.Canvas.Handle, 0, 0, srccopy);
Application.ProcessMessages;
Image1.Invalidate;
Sleep(50);
if not timer1.Enabled then break;
end;
end;
这样我试过不行啊,button1控制滚动显示,button2控制停止显示,还有别的建议吗?
谢谢
方法这样看看:
var RunFlag:boolean;
procedure form1.button1click(Sender: TObject);
begin
RunFlag:= True;
end; procedure form1.button2click(Sender: TObject0;
begin
RunFlag:= False;
end; procedure form1.timer1Timer(Sender: TObject);
var i : Integer;
begin
while RunFlag do
begin
显示一张图
sleep(50);
显示二张图
end;
end;会线程的话,用线程做
我单步调试时觉得应该是Application.ProcessMessages的问题,在运行时按下button1后程序跑到这里时就一直在这里等待,必须按下button2才能滚动显示,如果按下button1就又从头开始,而且在滚动显示时只有按下button1才能停下,按button2每反应。