Код: Выделить всё
unit Panel1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TExchangeLabel = class(TPanel)
private
kTimer:TTimer;
kLabel:TLabel;
procedure kTimerTimer(Sender: TObject);
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent);override;
published
{ Published declarations }
property Label1: TLabel read kLabel write kLabel;
property Timer1: TTimer read kTimer write kTimer;
end;
procedure Register;
var flag_r:boolean;
flag_l, flag_sz:boolean;
i:integer;
sizes:integer;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TExchangeLabel]);
end;
constructor TExchangeLabel.Create(AOwner: TComponent);
begin
flag_r:=true;
flag_l:=true;
flag_sz:=true;
i:=1;
Sizes:=8;
inherited Create(AOwner);
kLabel:=TLabel.Create(Self);
kTimer:=TTimer.Create(Self);
Color:= clWhite;
Width:=200;
Height:=200;
Caption:=' ';
kLabel.Parent:=Self;
kLabel.Color:=0;
kLabel.Font.Size:=8;
kLabel.Left:= 10;
kLabel.Top:= 48;
kLabel.Width:= 210;
kLabel.Height:= 31;
kLabel.Caption:='NewComponent';
kLabel.Visible:=true;
kLabel.ParentFont:= False;
kLabel.SetSubComponent(true);
kTimer.SetSubComponent(true);
kTimer.OnTimer:=kTimerTimer;
//i:=i+1;
kTimer.Enabled:=true;
Visible:=true;
end;
procedure TExchangeLabel.kTimerTimer(Sender: TObject);
var Color: array [1..9] of TColor;
begin
Color[1]:=clRed;
Color[2]:=clLime;
Color[3]:=clYellow;
Color[4]:=clGreen;
Color[5]:=clTeal;
Color[6]:=clBlue;
Color[7]:=clPurple;
Color[8]:=clAqua;
Color[9]:=clFuchsia;
if ((klabel.Left + klabel.Width) < Width) and (flag_r=true) then
begin
kLabel.Left:=kLabel.Left+1;
kLabel.Font.Color:=Color[i];
if (Sizes<14) and (flag_sz=true) then
begin
Sizes:=Sizes+1;
kLabel.Font.Size:=Sizes;
flag_sz:=true;
end
else begin
flag_sz:=false;
if (Sizes=8) then
flag_sz:=true
else begin
Sizes:=Sizes-1;
kLabel.Font.Size:=Sizes;
end;
end;
i:=i+1;
end
else
begin
flag_r:=false;
if (kLabel.Left=0) then
flag_r:=true
else
begin
kLabel.Left:=kLabel.Left-1;
kLabel.Font.Color:=Color[i];
if (Sizes<14) and (flag_sz=true) then
begin
Sizes:=Sizes+1;
kLabel.Font.Size:=Sizes;
flag_sz:=true;
end
else begin
flag_sz:=false;
if (Sizes=8) then
flag_sz:=true
else begin
Sizes:=Sizes-1;
kLabel.Font.Size:=Sizes;
end;
end;
i:=i+1;
end;
end;
end;
end.