Konstruktor für Objekte
Musste leider einen neuen Account registrieren, da ich meinen alten Benutzernamen vergessen habe.
Zu meinem Problem:
Delphi-Quellcode:
Also ich habe hier eine Klasse "TAuto", die die Eigenschaft Bild vom Datentyp TImage hat. Ich create die Klasse und initialisiere die Werte. In diesem Fall hat die Klasse TAuto eine unidirektionale Assoziation zu TImage? Wenn ja warum nicht Aggregation?
type
TAuto = class(TObject) private FTempo: Integer; public Bild: TImage; constructor Create(path:string); procedure Gasgeben; procedure Bremsen; property Geschwindigkeit: Integer read FTempo; end; Das Createn des Objekts "Bild" macht der Konstruktor, oder liege ich da falsch? |
Re: Konstruktor für Objekte
Bild ist erstmal eine Referenz(Zeiger) auf eine TImage-Instanz, ob du eine neue erstellst oder eine vorhandene referenzierst, steht dir frei
Zitat:
|
Re: Konstruktor für Objekte
Es ist im Prinzip eine Aggregation, wobei das Image auch seinen Owner kennen könnte. Und zwar entscheidest du das, wenn du das Image erzeugst:
Delphi-Quellcode:
Das Problem hierbei ist, dass der Owner vom Typ TComponent sein muss und nicht TObject. Ebenso spielt der Owner beim Freigeben des Speichers eine Rolle.
Bild := TImage.Create( <Reference to Owner> );
|
Re: Konstruktor für Objekte
Anstelle eines TImage würde ich ein TPicture verwenden.
TImage ist ein sichtbares Control. Dagegen ist TPicture eine Kontainerklasse für ein Bitmap, JPeg, GIF oder anderen Bildformates.
Delphi-Quellcode:
type
TAuto = class(TObject) private FTempo: Integer; FBild : TPicture; public constructor Create(const path:string); Destructor Destroy;override; procedure Gasgeben; procedure Bremsen; property Geschwindigkeit: Integer read FTempo; property Bild: TPicture read FPicture; end; constructor TAuto.Create(const path:string); begin inherited Create; FBild := TPicture.Create; if FileExists(path) then FBild.LoadFromFile(path); end; Destructor Destroy;override; begin FPictures.Free; interited; end; |
Re: Konstruktor für Objekte
Vielen Dank für die hilfreichen Antworten.
... Man kann ja auch Objekte createn, in dem man einfach die Objekte (von der Leiste oben) auf das Formular zieht. Sagen wir, ich platzier auf mein Formular einen Button. Wenn ich das Programm jetzt compiliere und ausführe, dann wird dieses Objekt ja im Hintergrund createt. Gibt es eine Möglichkeit den Quellcode dieses Konstruktors anzusehen? Mfg |
Re: Konstruktor für Objekte
Zitat:
Du klickst mit gedrückter Strg-Taste auf den Klassennamen TButton
Delphi-Quellcode:
Dann öffnet sich die Unit StdCtrls an der Deklaration von TButton.
TForm1=class(TForm)
Button1:TButton; // <- Aber nur, wenn das Programm nicht läuft. Aufpassen, dass du diese Unit nicht versehentlich änderst; auf jeden Fall nicht speichern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz