unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TSprite = class(TObject) // Don't know what a "sprite" is, but it has a tag property
private
FTag: integer;
public
property Tag:integer read FTag write FTag;
end;
TFred = class(TObject)
private
num: integer;
wp: byte;
st: string;
public
constructor Create( ANumber:integer; AByte:byte; AString:string );
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
sprite: array[0..27] of TSprite;
implementation
{$R *.dfm}
{ On create, extend all sprites with a TFred via the tag property.}
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:=0 to 27 do
Sprite[i] := TSprite.Create;
// Each sprite has custom "Fred" data...
sprite[0].tag := Integer(TFred.Create( 1001, 42, 'This is 1001-42'));
sprite[1].tag := Integer(TFred.Create( 1002, 43, 'This is 1002-43'));
sprite[2].tag := Integer(TFred.Create( 1003, 44, 'This is 1003-44'));
sprite[3].tag := Integer(TFred.Create( 1004, 45, 'This is 1004-45'));
// etc.
ShowMessage( 'Data from sprite[2]: ' + TFred(sprite[2].tag).st );
end;
{ On destroy, free all TFred and sprite objects. }
procedure TForm1.FormDestroy(Sender: TObject);
var
i:integer;
begin
for i := 0 to 27 do
begin
TFred(sprite[i].Tag).Free;
sprite[i].Free;
end;
end;
{ TFred }
constructor TFred.Create(ANumber: integer; AByte: byte; AString: string);
begin
num := ANumber;
wp := AByte;
st := AString;
end;
end.