компонент, который изменяет свое положение, цвет и размер с течением времени

VCL, KOL, CLX и др. Свои компоненты
Ответить
Ксения_1
Сообщения: 1
Зарегистрирован: 17 янв 2014, 16:20

17 янв 2014, 16:24

При проектировании приложения с этим компонентом все работает (когда только кидаю компонент на форму) , но после запуска меняется только местоположение. Подскажите, пожалуйста, в чем может быть ошибка

Код: Выделить всё

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.
Ответить