Type TBild_fertig_gezeichnet =
procedure of Object;
Type TLadebalken =
class
Bild_fertig_gezeichnet: TBild_fertig_gezeichnet;
private
iLaenge, iHoehe, iPos: integer;
privbmp: TBitmap;
CHintergrundFarbe, CBalkenFarbe: TColor;
Bewegungstimer: TTimer;
procedure Bild_loeschen;
procedure Bild_neu_zeichnen;
procedure Bild_senden;
procedure Bewegungssim(Sender: TObject);
public
constructor create;
destructor Destroy;
property HintergrundFarbe: TColor
read CHintergrundFarbe
write CHintergrundFarbe;
property Balkenfarbe: TColor
read CBalkenFarbe
write CBalkenFarbe;
property Bild_zeichnen: TBild_fertig_gezeichnet
read Bild_fertig_gezeichnet
write Bild_fertig_gezeichnet;
property BMP: TBitmap
read privbmp
write privbmp;
property Laenge: integer
read iLaenge
write iLaenge;
property Hoehe: integer
read iHoehe
write iHoehe;
end;
implementation
{////////////////////////////////////////////////////////////////////////////////////}
{/ Ladebalken-Funktionen /}
{////////////////////////////////////////////////////////////////////////////////////}
constructor TLadebalken.create;
begin
inherited create;
privbmp := TBitmap.Create;
privbmp.Height := iHoehe;
privbmp.Width := iLaenge;
Bewegungstimer := TTimer.Create(
nil);
Bewegungstimer.Interval := 50;
Bewegungstimer.OnTimer := Bewegungssim;
CHintergrundFarbe :=
RGB(250,250,220);
CBalkenFarbe :=
RGB(0,0,255);
iPos := -30;
end;
procedure TLadebalken.Bild_loeschen;
var i: integer;
begin
for i := 0
to iHoehe
do
begin
privbmp.Canvas.Pen.Color := CHintergrundFarbe;
privbmp.Canvas.MoveTo(0,i);
privbmp.Canvas.LineTo(iLaenge,i);
end;
end;
procedure TLadebalken.Bild_neu_zeichnen;
var i: integer;
begin
for i := 0
to iHoehe
do
begin
privbmp.Canvas.Pen.Color := CBalkenFarbe;
privbmp.Canvas.MoveTo(iPos,i);
privbmp.Canvas.LineTo(iPos+30,i);
end;
Bild_senden;
end;
procedure TLadebalken.Bild_senden;
begin
if assigned(Bild_fertig_gezeichnet)
then Bild_fertig_gezeichnet;
end;
procedure TLadebalken.Bewegungssim;
begin
Bild_loeschen;
Bild_neu_zeichnen;
iPos := iPos + 1;
if iPos >= iLaenge
then iPos := -30;
end;
destructor TLadebalken.Destroy;
begin
privbmp.Free;
Bewegungstimer.Free;
end;
end.