onDraw approach is propably what you are after. I'll try show you the details.

[quote=dazappa ]
[pascal]type
TDrawProcedure = procedure();
// add "of object" at end if you want to define procedure in a class
// and you propably do want.. so onDraw knows the sprite's variables

TSpr = class(TImageSpriteEx)
protected
procedure DoMove(timegap:double); override;
procedure DoDraw; override;
public
onDraw: TDrawProcedure; // It is a pointer to procedure

col:boolean;
xspeed,yspeed: integer;
end;
[/pascal]

[pascal]
spr := TSpr.Create(engine);
elGUI.add(spr);
with spr do
begin
Image := gui.Items[1];
X := 0;
Y := 0;
CollisionTester := ColTest;
onDraw := SecondOverride;
end;

procedure SecondOverride;
begin
Color := rgb(200,200,200);
end;
[/pascal]

[pascal]
procedure TSpr.DoDraw;
begin
if assigned(onDraw) then onDraw;
inherited;
end;
[/pascal]