![]() |
OOP Komponente auf dem Formular erzeugen.
Hi,
ich bin dabei eine Art kleines Pokerspiel zu programmieren. Dazu habe ich in einer externen Unit die Klasse TKarte erzeugt, die sich von TImage ableitet und um Attribute wie Farbe und Wert sowie einige Methoden erweitert wurde. Die Idee ein Objekt, das die Eigenschaften einer Karte besitzt und gleichzeitig für den Benutzer anzeigt. Um eine solche Karte zu erzeugen und sichtbahr zu machen, reicht z.B. schon
Delphi-Quellcode:
Im nächsten Schritt soll aber ein Klasse THand entstehen, die (zum Schluss) 5 solcher Karten verwaltet.
procedure TForm1.FormCreate(Sender: TObject);
begin TESTKarte := TKarte.Create(self); TESTKarte.Parent := self; TESTKarte.Initiate; //Eigene Methode TESTKarte.SetMessurements(50,50,200,300); //Eigene Methode end; Also habe ich Karten als Attribut in THand einfach eingetragen.
Delphi-Quellcode:
Die Prozedur TEST soll die Karten auf dem Formular erzeugen. Mir ist irgendwie klar, dass es so nicht funktionieren kann. Woher soll meine Karte denn überhaupt noch wissen was Form1 ist. Außerdem hätte ich es gerne unabhängig.
THand = class
private TESTKarte: TKarte; public procedure TEST; end;
Delphi-Quellcode:
Wie kann ich das am besten lösen?
procedure THand.TEST;
begin TESTKarte := TKarte.Create(Form1); //TESTKarte.Parent := self; TESTKarte.Initiate; TESTKarte.SetMessurements(50,50,200,300); end; end. Vielen Dank schonmal, abx. |
Re: OOP Komponente auf dem Formular erzeugen.
Du muss deiner Hand einen Konstruktor(Create) hinzufügen und diesem eine Referenz auf dein Form (oder zumindest auf das Canvas oder auf was du genau zeichnest) übergeben und diese in einem Feld speichern. Abgesehen davon ist es imho keine gute Idee Verarbeitung und Ausgabe zu verquicken.
|
Re: OOP Komponente auf dem Formular erzeugen.
Danke,
Der consturctor war der entscheidende Hinweis. Mit der Trennung von Verarbeitung und Ausgabe ist auch ne Idee. |
Re: OOP Komponente auf dem Formular erzeugen.
Klassischer Fall für Containerklassen:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz