我正在尝试使用for
循环动画化一个包含7个图片的下拉菜单,在for
循环中的代码每次迭代后,使用不同的组件进行更改。例如,第一次运行循环时:使用imgCourses7.Top
,但第二次运行循环时(当I = 1
时),则应使用imgCourses6.Top
。
iCoursesCount := 7;
iTotalLength := (6+41)*iCoursesCount;
imgCourses7.Top := 6;
imgCourses6.Top := 6;
imgCourses5.Top := 6;
imgCourses4.Top := 6;
imgCourses3.Top := 6;
imgCourses2.Top := 6;
imgCourses1.Top := 6;
for I := 0 to iCoursesCount -1 do
begin
while not(imgCourses7.Top = iTotalLength - 41*(I+1)) do
begin
imgCourses8.Top := imgCourses8.Top + 6;
sleep(8);
application.ProcessMessages;
if imgCourses7.Top >= iTotalLength - 41*(I+1) then
begin
imgCourses7.Top := iTotalLength - 41*(I+1);
break;
end;
end;
end;
1条答案
按热度按时间z9smfwbn1#
就像@AndreasRejbrand在评论中说的那样,可以使用数组,例如:
也就是说,你真的不应该使用每次迭代都需要
Application.ProcessMessages()
的休眠循环。你可以考虑使用TTimer
或TThread.ForceQueue()
。不要不必要地阻塞主UI线程。例如: