Ich hoffe mal der Titel ist nicht zu eigenartig, hab nur keine Ahnung wie ich es sonst schreiben sollte.(falls er irreführend sein sollte bitte sagen)
Mein Problem:
Versuche gerade OOP zu lernen und damit ein Spiel das ich vorn paar Jahren inner Schule programmiert habe neuzuschreiben. Bei dem Spiel brauche ich hauptsächlich TImages und habe davon eine Klasse abgeleitet und erweitert(das klappt soweit auch) . In die neue Klasse habe ich eine Variable vom Typ einer andern erstellten Klasse eingebaut, nur kann ich nicht so recht auf die Eigenschaften dieser Klasse zugreifen(nur auf die erste Eigenschaft).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| type Tgr_obj = class(TImage) private FBesitzer : TBesitzer;
procedure setX(i: Integer); procedure setY(i: Integer); function getX: Integer; function getY: Integer; public constructor create(x,y: Integer; owner: TComponent; n: String; ID, race: byte); destructor destroy; override; property x : Integer read getX write setX; property y : Integer read getY write setY; property Besitzer : TBesitzer read FBesitzer write FBesitzer; end;
implementation
constructor Tgr_obj.create(x,y: Integer; owner: TComponent; n: String; ID, race: byte); begin inherited create(owner); setX(x); setY(y); Autosize := true; FBesitzer := TBesitzer.Create(n, ID, race); end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type TBesitzer = class private FBesitzer_Name : String; FSpielerID : byte; FRasse : byte; FBeziehung : array of byte; public procedure setName(n: String); procedure setSpielerID(i: byte); procedure setRace(i: byte); function getName: String; function getSpielerID: byte; function getRace: byte;
constructor Create(n: String; ID, race: byte); property Name : String read getName write setName; property SpielerID : byte read getSpielerID write setSpielerID; property Race : byte read getRace write setRace; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var objekt : TPlanet;
procedure TForm1.FormCreate(Sender: TObject); begin objekt := TPlanet.Create(10,20, NIL, 'Peter', 0, 0); with objekt do begin Picture.LoadFromFile('bild.bmp'); Parent := Form1; SProduktion := 10; PName := 'Betelgeuze'; end; label1.caption := IntToStr(objekt.SOrbit); label2.caption := objekt.Besitzer.Name; <-----Das wird angezeigt label3.caption := objekt.Besitzer.SpielerID; <-----Das wird nichtmehr angezeigt end; |
TPlanet is ne weitere Ableitung von Tgr_obj...und ansonsten geht das auch.
Sicherlich hab ich da irgendwas nicht beachtet beim Programmieren. Würde mich freuen wenn mich da jemand aufklären könnte was das ist. Danke schonmal!
Moderiert von
Christian S.: Topic aus Sonstiges verschoben am Mi 14.12.2005 um 17:05