Eternal_Shield
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Simkara Заведите глобальную переменную (пусть будет ShowStage). Пофиг где: в классе или, прям так, в implementation; Пусть она будет отражать текущюю стадию или шаг, без разницы. Не забудьте проинициализировать её нулём, ибо в примере всё с нуля; И в таймере, соотв., обрабатывайте стадию. После прохождения стадии, инкремент ShowStage. Что-то типа: Код: procedure TForm234234.Timer....; begin case ShowStage of 0: begin { рисуем первый квадрат } PaintBox1.Canvas.Rectangle(40,60,100,90); //1-й квадрат Label1.Caption:=IntToStr(a[1]); Inc(ShowStage); end; // 0 // ===================== 1: begin { рисуем первый и второй квадраты } PaintBox1.Canvas.Rectangle(40,60,100,90); //1-й квадрат Label1.Caption:=IntToStr(a[1]); PaintBox1.Canvas.Rectangle(245,60,300,90); //2-й квадрат Label2.Caption:=IntToStr(a[1]); Inc(ShowStage); end; // 1 // ===================== 2: begin { рисуем все квадраты } PaintBox1.Canvas.Rectangle(40,60,100,90); //1-й квадрат Label1.Caption:=IntToStr(a[1]); PaintBox1.Canvas.Rectangle(245,60,300,90); //2-й квадрат Label2.Caption:=IntToStr(a[1]); PaintBox2.Canvas.Rectangle(10,110,50,140); //3-й квадрат Label3.Caption:=IntToStr(a[1]); end; // 2 // ===================== end; // case ShowStage of end; | В итоге всё будет работать и, даже, перерисовываться; То, о чём написал Frodo_Torbins слегка упростится до моргания; Надеюсь идея ясна, а с оптимизировать сами сможете; А да, таймер не выключайте, а то всё сделается так, как сказал Frodo_Torbins. З.Ы: когда уже на этом форуме появится нормальная подсветка синтаксиса?! |