Ok, ich versuche es beispielhaft zu erklären.
Habe folgende Klassen:
TAuto:
Code:
TAuto = class(TObject)
private
FHersteller: string;
published
property Hersteller: string read FHersteller write FHersteller;
end;
TCabrio:
Code:
TCabrio = class(TAuto)
private
FSitze: integer;
published
property FSitze: string read FSitze write FSitze;
end;
TCoupe:
Code:
TCoupe= class(TAuto)
private
FSitze: integer;
published
property FSitze: string read FSitze write FSitze;
end;
Nun speichere ich Objekte in meiner TObjectlist:
Code:
var: AutoListe: TObjectList;
Cabrio: TCabrio;
Coupe: TCoupe:
Auto: TAuto;
AutoListe := TObjectList.Create;
Auto := TAuto.Create;
Auto.FHersteller := 'BMW';
Coupe:= TCoupe(Auto);
Coupe.FSitze := 4;
AutoListe.Add(Coupe);
Auto := TAuto.Create;
Auto.FHersteller := 'VW';
Cabrio:= TCabrio(Auto);
Cabrio.FSitze := 2;
AutoListe.Add(Cabrio);
Und hier möchte ich auselesen, um welches Objekt es sich handelt:
Code:
for i := 0 to ObjectList.Count - 1 do
begin
Auto := TAuto(ObjectList.Items[i]);
if (Auto is TCabrio) then
ShowMessage('Es ist ein Cabrio');
if (Auto is TCoupe) then
ShowMessage('Es ist ein Coupe');
end;
Aber es wird mir keine ShowMessage-Box erzeugt, somit erkennt er mir auch nicht mein Objekt.