#delphi #timer #shapes
#delphi #таймер #формы
Вопрос:
Я напрягал свой мозг, пытаясь создать экран загрузки в Delphi, но я просто нигде не могу найти помощь.
Я создаю игру для школьного проекта, и я хотел бы реализовать форму, которая имитирует экран загрузки.
Я хочу переместить фигуру по экрану, и я хочу, чтобы она оставляла за собой след (имитировать индикатор выполнения). Я знаю, что вы используете таймер для сглаживания его прогрессии, но я не уверен в том, как правильно использовать таймер с формой.
Я был бы признателен, если бы кто-нибудь показал мне, какой код / функции я должен использовать для этого.
С уважением, Кузон.
Комментарии:
1. Зачем «имитировать» экран загрузки? Почему бы не создать реальный экран загрузки? В чем разница?
2. Разница в том, что программа является школьным проектом, как я уже говорил ранее, и фактический экран загрузки немного не в моей компетенции. «Поддельный» экран загрузки предназначен только для эстетики, чтобы программа выглядела более «профессиональной».
3. Кто когда-либо голосовал против… Почему?
Ответ №1:
Чтобы переместить фигуру с помощью таймера и оставить след:
Каждый раз, когда срабатывает таймер, регулируйте положение фигуры. Здесь дорожка также имеет форму, добавляя ширину с каждым тиком таймера.
unit MoveShape;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
type
TFormMoveShape = class(TForm)
Shape1: TShape;
Timer1: TTimer;
Shape2: TShape;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormMoveShape: TFormMoveShape;
implementation
{$R *.dfm}
const
cMoveIncrement = 2;
procedure TFormMoveShape.Timer1Timer(Sender: TObject);
begin
if (Shape1.Left Shape1.Width < Self.ClientWidth - cMoveIncrement) then
begin
Shape1.Left := Shape1.Left cMoveIncrement;
Shape2.Width := Shape2.Width cMoveIncrement;
end
else
begin
Shape1.Left := 8;
Shape2.Width := 8;
end;
end;
end.
object FormMoveShape: TFormMoveShape
Left = 0
Top = 0
Caption = 'Form27'
ClientHeight = 336
ClientWidth = 635
Color = clBtnFace
DoubleBuffered = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Shape2: TShape
Left = 8
Top = 112
Width = 8
Height = 41
Brush.Color = clAqua
Shape = stRoundRect
end
object Shape1: TShape
Left = 8
Top = 112
Width = 137
Height = 41
Shape = stRoundRect
end
object Timer1: TTimer
Interval = 50
OnTimer = Timer1Timer
Left = 512
Top = 24
end
end
Комментарии:
1. Большое вам спасибо! Этот код чрезвычайно полезен и углублен. Экран загрузки будет выглядеть фантастически. Очень признателен!